Xpath是Selenium中用来唯一标识网页上元素的定位器之一。它遍历DOM以到达具有特定属性(带有/不带有标记名)的所需元素。
xpath可以用下面列出的方式表示-
// tagname [@ attribute ='value']
// * [@@ attribute ='value']
可以通过以下方法创建xpath-
OR&AND表达式。
兄弟姐妹的表达。
父母
儿童。
祖先。
自。
后裔。
以。。开始()
以。。结束()
文本()
前。
xpath有两种类型-绝对和相对。
相对xpath –此路径从DOM html的任何部分开始。它用双斜杠//表示,并且有助于识别网页任何部分中的元素,并且xpath表达式不是冗长的表达式。
最好使用相对xpath,因为我们不必从根开始就可以定位元素。因此,在任何属性或其值被修改的情况下,受到不正确的xpath影响的可能性较小。
语法-
driver. find_element_by_xpath("//input[@class='gsc-input']")
绝对xpath –此路径从html根目录开始,到所需元素。用单斜杠/表示。与相对xpath相比,它要更长一些,如果从根元素开始的任何属性或其值被更改,那么最终我们将无法在页面上唯一标识所需的对象。
语法-
driver. find_element_by_xpath("/html/body/div/input")
Xpath可以执行双向流,这意味着遍历遍历父级到子级都可以,反之亦然。
语法-
driver.find_element_by_xpath("//table/tbody/tr[2]/td[2]")
语法-
driver. find_element_by_xpath("//input[@id='job']/parent::div")
在速度方面,xpath比css慢。