XPATH 元素定位
XPath 是用于在 XML 文档中定位节点的语言。由于 HTML 可以是 XML (XHTML) 的实现,Selenium 用户可以利用这种强大的语言来定位其 Web 应用程序中的元素。XPath 扩展(并支持)通过 id 或 name 属性定位的简单方法,并开辟了各种新的可能性,例如定位页面上的第三个复选框。
使用 XPath 的主要原因之一是当您没有合适的 id 或 name 属性用于您希望定位的元素时。您可以使用 XPath 以绝对术语(不建议)或相对于具有 id 或 name 属性的元素来定位元素。XPath 定位器还可用于通过 id 和 name 以外的属性指定元素。
绝对 XPath 包含来自根 (html) 的所有元素的位置,因此可能会失败,只需对应用程序进行最轻微的调整。通过查找具有 id 或 name 属性的附近元素(理想情况下是父元素),您可以根据关系定位目标元素。这不太可能改变,并且可以使您的测试更加健壮。
由于只有定位器以“//”开头,因此在指定 XPath 定位器时xpath不需要包含标签。
xpath通过绝对路径定位元素
将xpath表达式从html的最外从节点,逐层填写,最后定位到操作元素。
注意:如果 HTML 稍微改变就会中断,不建议使用
1 driver.find_element_by_xpath('/html/body/div[2]/div[1]/a')
2 driver.find_element(By.XPATH, '/html/body/div[2]/div[1]/a')
xpath通过相对路径定位元素
绝对路径与相对路径的差别与文件系统中的绝对和相对路径类似,相对路径是只给出元素路径的部分信息,在html的任意层次中寻找符合条件 的元素,语句以//开始
1 driver.find_element_by_xpath('//form/span')
2 driver.find_element(By.XPATH, '//form/span')
xpath通过元素属性定位元素
单属性定位://input[@name='pwd']
1 driver.find_element_by_xpath("//input[@name='pwd']")
2 driver.find_element(By.XPATH, "//input[@name='pwd']")
多属性定位: //a[@title="tutorial" and @rel="follow"]
1 driver.find_element_by_xpath('//a[@title="tutorial" and @rel="follow"]')
2 driver.find_element(By.XPATH, '//a[@title="tutorial" and @rel="follow"]')
xpath通过属性值模糊匹配定位元素
xpath模糊匹配的函数有两种: starts-with和contains
starts-with://label[starts‐with(@class,'btn')]
1 driver.find_element_by_xpath("//label[starts‐with(@class,'btn')]")
2 driver.find_element(By.XPATH, "//label[starts‐with(@class,'btn')]")
contains://label[contains(@class,'btn')]
1 driver.find_element_by_xpath("//label[contains(@class,'btn')]")
2 driver.find_element(By.XPATH, "//label[contains(@class,'btn')]")
xpath通过文本定位元素
文本内容的定位是利用html的text字段进行定位的方法,//span[text()='下一步'],由于“下一步”这几个字是浏览器界面就可以看到的,“所见即所得”,这种特征的可能性非常小,优先推荐使用,与属性值类似,文本内容也支持starts-with和contains模糊匹配。
1 driver.find_element_by_xpath("//span[text()='下一步']")
2 driver.find_element(By.XPATH, "//span[text()='下一步']")
3 driver.find_element(By.XPATH, "//span[starts‐with(text(),'下一步')]")
4 driver.find_element(By.XPATH, "//span[contains(text(),'下一步')]")
xpath常见语法一览表
表达式说明举例**/从根节点开始选取/html/div/span****//从任意节点开始选取//input****.选取当前节点..选取当前节点的父节点//input/.. 会选取input的父节点****@**选取属性,或者根据属性选取
//input[@data] 选取具备 data属性的input元素
//@data 选取所有 data属性
*****通配符,表示任意节点或任意属性
版权归原作者 测试卷卷 所有, 如有侵权,请联系我们删除。