selenium元素定位方式有以下八种:
元素定位8中方式
本文主要介绍css_selector方式进行定位
css_selector方式定位元素:
- 通过ID和Class定位
- 通过绝对路径和相对路径定位
- 通过属性定位
- 通过模糊属性定位
- 通过层级关系定位
- 通过兄弟节点定位
前提准备:
1.python 环境安装
2.pip install selenium
3.浏览器驱动安装,本文选择chrome driver,将驱动放到工程下或者配置环境变量(ps:注意浏览器版本和驱动要一致哦)
4.编写代码打开浏览器
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
time.sleep(2)
1.通过ID和Class定位
以百度页面搜索为例
- 通过F12查看元素
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
- 通过ID查找元素:#
driver.find_element(By.CSS_SELECTOR,value='#kw').sendkeys('hello')
- 通过Class查找:.
driver.find_element(By.CSS_SELECTOR,value='.s_ipt').sendkeys('hello')
2.通过相对路径和绝对路径查找: 上下级关系用>或空格
-
通过F12查看元素
image.png - 通过绝对路径查找元素:> 或空格
driver.find_element(By.CSS_SELECTOR,value='html>body>div>div>div>div>div>form>span>input').sendkeys('hello')
driver.find_element(By.CSS_SELECTOR,value='html body div div div div div form span input').sendkeys('hello')
- 通过相对路径查找:
driver.find_element(By.CSS_SELECTOR,value='form span input').sendkeys('hello')
driver.find_element(By.CSS_SELECTOR,value='form>span>input').sendkeys('hello')
3.通过属性定位:
- 通过F12查看元素
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
- 通过属性[]:autocomplete="off"
driver.find_element(By.CSS_SELECTOR,value=["autocomplete='off'"]).sendkeys('hello')
4.通过属性模糊定位:
(1)*:包含
(2)^:以什么开头
(3)$:以什么结尾
- 通过F12查看元素
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
- 通过属性[]:autocomplete="off"
driver.find_element(By.CSS_SELECTOR,value=["autocomplete*='ff'"]).sendkeys('hello')
driver.find_element(By.CSS_SELECTOR,value=["autocomplete^='of'"]).sendkeys('hello')
driver.find_element(By.CSS_SELECTOR,value=["autocomplete$='f'"]).sendkeys('hello')
5.层级关系,一般会和id和class结合使用,并运用上下级关系:
-
通过F12查看元素
image.png -
确定层级关系:form-span-input
driver.find_element(By.CSS_SELECTOR,value="form#form>span>input").sendkeys('hello')
driver.find_element(By.CSS_SELECTOR,value="form.fm span input").sendkeys('hello')
6.通过兄弟节点定位:
(1)第一个节点:first-child
(2)第2、3、4...n个节点:nth-child(n)
(3)最后一个节点:last-child
-
通过F12查看元素
image.png
- 确定层级关系:form-span-input
driver.find_element(By.CSS_SELECTOR,value="div#s-top=left a:first_child").click()
# 第二个节点
driver.find_element(By.CSS_SELECTOR,value="div#s-top=left>a:nth-child(2)").click()
driver.find_element(By.CSS_SELECTOR,value="div#s-top=left a:last-child").click()
网友评论