UI自动化的核心在于定位
目录
1、8种基础定位方法
2、xpath定位
3、css定位
4、多组元素
1、8种基础定位方法
driver.find_element_by_id() #id定位 driver.find_element_by_name() #name定位 driver.find_element_by_class_name() #class定位 driver.find_element_by_tag_name() #标签名定位,一般用于iframe;标签较少的也可以使用,用取下标的方式 driver.find_element_by_xpath() #xpath定位,可以用firepath来获得这个定位 driver.find_element_by_css_selector() #css定位 driver.find_element_by_link_text() #a标签的文本定位 driver.find_element_by_partial_link_text() #a标签的局部文本定位
2、xpath定位
//:相对定位
*匹配任意标签
第一种:id\class\name\其他属性
driver.find_element_by_xpath("//*[@id='']") #id和值 driver.find_element_by_xpath("//*[@class='']") #class和值 driver.find_element_by_xpath("//*[@name='']") #name和值,如:find_element_by_xpath("//*[name='']") driver.find_element_by_xpath("//*[@shuxingming='']") #属性名和值,如:find_element_by_xpath("//*[align='left']")
第二种:模糊匹配\层级\索引\逻辑运算
模糊匹配:
driver.find_element_by_xpath("//*[contains(text(),'测试')]") #包含某些字符 driver.find_element_by_xpath("//*[starts-with(text(),'测试')]") #以某些字符开头 driver.find_element_by_xpath("//*[ends-with(text(),'测试')]") #以某些字符结尾 driver.find_element_by_xpath("//*[matchs(text(),'测试')]") #正则匹配
层级:
driver.find_element_by_xpath("//*[@id='']/p")
索引:
driver.find_element_by_xpath("//*[@id='']/option[0]")
逻辑运算:
driver.find_element_by_xpath("//*[@class=''and @name='']")
第三种:
绝对定位,使用firepath:
html/body/heard/div/div/div/div/ul/li[2]/a
3、css定位
第一种:id\class\标签名
driver.find_element_by_css_selector("#username") #id为username driver.find_element_by_css_selector(".username") #class为username driver.find_element_by_css_selector("iframe") #标签名为iframe
第二种:
索引: driver.find_element_by_css_selector("selet#nr>option:nth-child(1)") #标签名:nth-child(1)来定位子元素 层级: driver.find_element_by_css_selector("selet#nr>option") #标签名:nth-child(1)来定位子元素 逻辑运算: driver.find_element_by_css_selector("input#nr[id=''][class='']") #不用and连接,写在一起即可
4、多组元素
一组元素是find_element,多组就是find_elements,其他定位方法一样。只不过要通过下标索引的方式取得想要的值
m=driver.find_elements_by_name("qq") print m[1]