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]