一、八大元素定位
1、使用元素定位的前提:需要定位的元素或它的属性必须唯一。
2、
find_element_by_*
命令在最新的SeleniumPython库中已被弃用,必须使用
find_element()
。
3、八大元素:
id、name、link_text、partial_link_text、css_selector、xpath、class_name、tag_name
4、使用方法
①引入By
from selenium.webdriver.common.by import By
- 使用
id
:element = driver.find_element(By.ID, "element_id")
- 使用
name
:element = driver.find_element(By.NAME, "element_name")
- 使用
class_name
:button = driver.find_element(By.CLASS_NAME, "quiz_button")
- 使用
link_text
:element = driver.find_element(By.LINK_TEXT, "element_link_text")
- 使用
partial_link_text
:element = driver.find_element(By.PARTIAL_LINK_TEXT, "element_partial_link_text")
- 使用
tag_name
:element = driver.find_element(By.TAG_NAME, "element_tag_name")
- 使用
css_selector
:element = driver.find_element(By.CSS_SELECTOR, "element_css_selector")
- 使用
xpath
:element = driver.find_element(By.XPATH, "element_xpath")
②语法如下:
- 使用
id
:element = driver.find_element(“id”, "element_id")
- 使用
name
:element = driver.find_element("name", "element_name")
- 使用
class_name
:button = driver.find_element("class_name", "quiz_button")
- 使用
link_text
:element = driver.find_element("link_text", "element_link_text")
- 使用
partial_link_text
:element = driver.find_element("partial_link_text", "element_partial_link_text")
- 使用
tag_name
:element = driver.find_element("tag_name", "element_tag_name")
- 使用
css_selector
:element = driver.find_element("css_selector", "element_css_selector")
- 使用
xpath
:element = driver.find_element("xpath", "element_xpath")
5、使用场景
①优先用id、name
②是否是超链接,是超链接用
link_text、partial_link_text,
否则用
css_selector、xpath
③
class_name、tag_name
很少用,因为这俩个难以保证被定为元素或属性的唯一性
6、xpath定位方法
(1)绝对路径:以/开头,从源头标签开始从上到下查找所需元素
(2)相对路径:以//开头
①相对路径+索引定位
//标签名/标签名[有同名标签时,所需标签的序号]/标签名 例://form/span[1]/input
②相对路径+属性定位:搜索标签名下属性为属性名1='属性值1'的标签
//标签名[@属性名1='属性值1'] 例://input[@autocomplete='off']
③相对路径+通配符定位
搜索整个网页找到标签里有属性名1='属性值1'的标签
//标签名*[@属性名1='属性值1'] 例://input[@autocomplete='off']
搜索整个网页找到标签里有属性值为'属性值1'的标签
//标签名*[@='属性值1'] 例://input[@='off']
④相对路径+部分属性值定位
搜素属性值以x开头的标签
//[start-with(@属性名,'x')] 例://[start-with(@autocomplete,'of')]
搜素属性值以x结尾的标签
//[substring(@属性名.a,'x')] 例://[substring(@autocomplete.2,'ff')]
搜素属性值包含x的标签
//[contains(@属性名,'x')] 例://[contains(@autocomplete,'ff')]
⑤相对路径+文本定位
//标签名[text()='x')] 例://span[text()='按图片搜索')]
7、css定位方法
1、绝对路径:基本不用
2、通过ID和Class定位
3、通过属性定位
4、通过部分属性定位
5、查询子元素定位
6、查询兄弟节点定位
二、元素定位不到的原因
1、元素没有加载完成
2、元素在Frame中
3、元素不可用、不可读、不可见
4、动态属性、动态的div层
版权归原作者 进击的萌小猫 所有, 如有侵权,请联系我们删除。