Python Selenium UI自动化_WebDriver元素_8大定位方式+总结(持续更新完善)

引包部分

from selenium.webdriver.chrome.webdriver import WebDriver#谷歌浏览器为例
from selenium.webdriver.common.by import By#本文采用“By.XXX”的方式
import time#经常需要强制等待、显式等待、隐式等待→等待页面元素布局刷新
self.dr=WebDriver#在测试类中实例化1个局部浏览器
GlobalDr=WebDriver#或者在测试类中实例化1个全局浏览器

8大定位方式

方式1:By.ID
self.dr.find_element(By.ID,‘XXX’)#通过ID属性定位唯一元素,多个的话默认取第一个
self.dr.find_elements(By.ID, ‘XXX’)#通过ID属性定位多个元素,结果为列表
self.dr.find_elements(By.ID, ‘XXX’)[3]#通过ID属性定位多个元素中的第3个
此处需注意,python中列表索引从0开始,但驱动浏览器执行时,相关执行语言中索引是从1开始哦!
方式2:By.NAME
self.dr.find_element(By.NAME,‘XXX’)#通过NAME属性定位唯一元素,多个的话默认取第一个
self.dr.find_elements(By.NAME, ‘XXX’)#通过NAME属性定位多个元素,结果为列表
self.dr.find_elements(By.NAME, ‘XXX’)[3]#通过NAME属性定位多个元素中的第3个
方式3:By.CLASS_NAME
self.dr.find_element(By.CLASS_NAME,‘XXX’)#通过类名定位唯一元素,多个的话默认取第一个
self.dr.find_elements(By.CLASS_NAME, ‘XXX’)#通过类名定位多个元素,结果为列表
self.dr.find_elements(By.CLASS_NAME, ‘XXX’)[3]#通过类名定位多个元素中的第3个
方式4:By.TAG_NAME
self.dr.find_element(By.TAG_NAME,‘XXX’)#通过标签名定位唯一元素,多个的话默认取第一个
self.dr.find_elements(By.TAG_NAME, ‘XXX’)#通过标签名定位多个元素,结果为列表
self.dr.find_elements(By.TAG_NAME, ‘XXX’)[3]#通过标签名定位多个元素中的第3个
方式5:By.LINK_TEXT
self.dr.find_element(By.LINK_TEXT,‘XXX’)#通过超链接(a标签)的文本定位唯一元素,多个的话默认取第一个
self.dr.find_elements(By.LINK_TEXT, ‘XXX’)#通过超链接(a标签)的文本定位多个元素,结果为列表
self.dr.find_elements(By.LINK_TEXT, ‘XXX’)[3]#通过超链接(a标签)的文本定位多个元素中的第3个
方式6:By.PARTIAL_LINK_TEXT
self.dr.find_element(By.PARTIAL_LINK_TEXT,‘XXX’)#通过超链接(a标签)的部分文本定位唯一元素,多个的话默认取第一个
self.dr.find_elements(By.PARTIAL_LINK_TEXT, ‘XXX’)#通过超链接(a标签)的部分文本定位多个元素,结果为列表
self.dr.find_elements(By.PARTIAL_LINK_TEXT, ‘XXX’)[3]#通过超链接(a标签)的部分文本定位多个元素中的第3个
方式7:By.CSS_SELECTOR(几乎万用,更切合前端CSS样式语言)
self.dr.find_element(By.CSS_SELECTOR,‘XXX’)#通过CSS选择器定位唯一元素,多个的话默认取第一个
self.dr.find_elements(By.CSS_SELECTOR, ‘XXX’)#通过CSS选择器定位多个元素,结果为列表
self.dr.find_elements(By.CSS_SELECTOR, ‘XXX’)[3]#通过CSS选择器定位多个元素中的第3个
未完待续
方式8:By.XPATH(几乎万用,更切合后端XML语言)
self.dr.find_element(By.XPATH,‘XXX’)#通过XPATH定位唯一元素,多个的话默认取第一个
self.dr.find_elements(By.XPATH, ‘XXX’)#通过XPATH定位多个元素,结果为列表
self.dr.find_elements(By.XPATH, ‘XXX’)[3]#通过XPATH定位多个元素中的第3个
未完待续

总结

1.个人推荐的定位方式的优先级:
ID>NAME>LINK_TEXT>PARTIAL_LINK_TEXT>CLASS_NAME>TAG_NAME>CSS_SELECTOR>XPATH
PS:其实有些公司为了脚本维护方便,人员交流方便,要求员工统一格式,都使用XPATH或者CSS_SELECTOR,博主之前上班的公司就要求全员使用By.XPATH定位。(其实这样也好,一招鲜,吃遍天,方便了那些有选择困难症的小伙伴,比如博主我)
未完待续

猜你喜欢

转载自blog.csdn.net/Tiandao60/article/details/108561601