Python Selenium Xpath高级定位用法

  • Post author:
  • Post category:python




分享知识  传递快乐


目前很多网页前端代码是框架或 JS 生成的,就导致了混乱而难以定位。为了快速而又复杂定位 Selenium 中有一个 Xpath 选择器,可以选择复杂的页面定位,也是爬虫在网页定位中的较优的选择。


1、通过绝对路径定位元素

driver.find_element_by_xpath("html/body/div/form/input")


2、通过相对路径定位元素

driver.find_element_by_xpath("//input")


3、使用索引定位元素

driver.find_element_by_xpath("//input[1]")


4、使用XPATH的属性值定位元素

driver.find_element_by_xpath("//input[@id='username']")
driver.find_element_by_xpath("//input[@type='submit'][@name='sub1']")
driver.find_element_by_xpath("//input[@type='submit' and @name='sub1']")
driver.find_element_by_xpath("//input[@type='submit' or @name='sub1']")


5、使用XPATH的属性名称定位元素

# 查找所有input标签中含有type属性的元素
driver.find_element_by_xpath("//input[@type]")

# 查找所有a标签中含有onclick属性的元素
driver.find_element_by_xpath("//a[@onclick]")

.....


6、使用任意值来匹配属性及元素

# 匹配所有input元素中含有属性的值为readonly的元素
driver.find_element_by_xpath("//input[@*='readonly']"))


7、使用模糊的属性值匹配


starts-with():匹配一个属性开始位置的关键字,是模糊定位的一种。

# 匹配id以submit开头的元素,如:id='submit'
driver.find_element_by_xpath("//input[start-with(@id,'submit')]")


ends-with():匹配一个属性结束位置的关键字,是模糊定位的一种。

# 匹配id以submit结尾的元素,如:id='submit'
driver.find_element_by_xpath("//input[ends-with(@id,'submit')]")


contains():匹配一个属性值中包含的字符串,也是模糊定位的一种。

# 匹配id中含有submit的元素,如:id='submit'
driver.find_element_by_xpath("//input[contains(@id,'submit')]")

# 匹配name属性中包含na关键字的页面元素
driver.find_element_by_xpath("//input[contains(@name,'na')]")


text():根据文本信息匹配元素位置。

# 如:<a href="http://www.baidu.com">百度搜索</a>
driver.find_element_by_xpath("//a[text()='百度搜索'] ")
driver.find_element_by_xpath("//a[contains(text(),"百度搜索")]")


last():函数位置定位。

# 表示div元素->form元素->input元素的最后一个子元素,得到id值为e2的E元素
driver.find_element_by_xpath("/div/form/input[last()]")


8、过虑某个元素


name():获取标签名称。

# 表示过虑掉在 div id='query_reulst_box' 的下的 style 标签和 meta 标签
driver.find_element_by_xpath("//div[@id='query_reulst_box']/*[not(name()='style' and name()='meta')]//text())

如需了解更多请参考:

XPath 语法



XPath 函数

—————————

如有不足请留言指正

相互学习,共同进步



版权声明:本文为xhaimail原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。