Python 的 Selenium 库进行元素定位时,XPath的详细用法

这篇具有很好参考价值的文章主要介绍了Python 的 Selenium 库进行元素定位时,XPath的详细用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用 Python 的 Selenium 库进行元素定位时,XPath 是一种常用的定位方式。XPath 是一种在 XML 文档中导航和定位元素的语言,同时也适用于 HTML 文档。下面是 XPath 的详细用法以及一个封装了通过 XPath 定位各种元素的类的示例。

XPath 详细用法:

  1. 绝对路径和相对路径

    • 绝对路径:以根节点开始的完整路径,例如 /html/body/div[1]/p[2]
    • 相对路径:以当前节点为参照物的路径,例如 //div/p[3]
  2. 元素定位

    • 通过标签名定位://tagname
    • 通过类名定位://*[contains(@class, 'classname')]
    • 通过id定位://*[@id='elementId']
    • 通过属性定位://*[@attribute='value']
    • 通过文本内容定位://*[text()='some text']
  3. 层级关系

    • 选择所有子孙节点://parent/child/grandchild
    • 选择直接子节点://parent/child
  4. 逻辑运算

    • 与运算:[condition1 and condition2]
    • 或运算:[condition1 or condition2]
  5. 位置定位

    • 第一个匹配的元素:(//div)[1]
    • 最后一个匹配的元素:(//div)[last()]
    • 倒数第二个匹配的元素:(//div)[last()-1

举例说明一下

  • 通过绝对路径定位元素:

    element = driver.find_element_by_xpath("/html/body/div[1]/form/input")
  • 通过相对路径定位元素:

    element = driver.find_element_by_xpath("//form/input[@name='username']")
  • 使用属性定位元素:

    element = driver.find_element_by_xpath("//*[@id='submitBtn']")
  • 使用文本内容定位元素:

    element = driver.find_element_by_xpath("//*[text()='Login']")
  • 模糊匹配定位元素:

    element = driver.find_element_by_xpath("//input[contains(@class, 'input-text')]")

封装通过 XPath 定位各种元素的类:

下面是一个简单的示例,展示了如何封装一个类来实现使用 XPath 定位各种元素,并考虑了各种 XPath 的元素定位和层级关系:

from selenium import webdriver

class ElementLocator:
    def __init__(self, driver):
        self.driver = driver

    def find_element_by_absolute_path(self, absolute_xpath):
        return self.driver.find_element_by_xpath(absolute_xpath)

    def find_element_by_relative_path(self, relative_xpath):
        return self.driver.find_element_by_xpath(relative_xpath)

    def find_element_by_attribute(self, attribute, value):
        xpath = f"//*[@{attribute}='{value}']"
        return self.driver.find_element_by_xpath(xpath)

    def find_element_by_text_content(self, text):
        xpath = f"//*[text()='{text}']"
        return self.driver.find_element_by_xpath(xpath)

    def find_element_by_partial_attribute_value(self, attribute, partial_value):
        xpath = f"//*[contains(@{attribute}, '{partial_value}')]"
        return self.driver.find_element_by_xpath(xpath)

# 示例使用
driver = webdriver.Chrome()
driver.get("https://example.com")

locator = ElementLocator(driver)
element1 = locator.find_element_by_absolute_path("/html/body/div[1]/form/input")
element2 = locator.find_element_by_relative_path("//form/input[@name='username']")
element3 = locator.find_element_by_attribute("id", "submitBtn")
element4 = locator.find_element_by_text_content("Login")
element5 = locator.find_element_by_partial_attribute_value("class", "input-text")

在上述示例中,我们封装了一个名为 ElementLocator 的类,其中包含了根据 XPath 定位各种元素的方法,同时考虑了各种 XPath 的元素定位和层级关系。通过这个类,你可以方便地使用 XPath 定位各种类型的元素。

当使用XPath进行元素定位时,可以结合不同的定位方式来定位各种元素。下面我会逐一介绍XPath的各种复杂用法:

1. 元素定位
通过标签名定位:
//div
通过id属性定位:
//*[@id='elementId']
通过class属性定位:
//*[@class='className']
通过其他属性定位:
//*[@attributeName='value']
2. 层级关系
子元素定位:
//div/a
父元素定位:
//a/..
兄弟元素定位:
//div/following-sibling::*
3. 文本内容
通过文本内容定位:
xpath
//*[text()='Some text']
模糊匹配文本内容:
//*[contains(text(), 'Partial Text')]
4. Class
通过class属性定位:
//div[contains(@class, 'className')]
5. 属性
通过其它属性定位:
//*[@attributeName='value']
多个属性组合定位:
//*[@attribute1='value1' and @attribute2='value2']
使用正则表达式匹配属性值:
//div[@id='regexMatch(\d+)']
复杂用法示例:
//div[contains(@class, 'content')]/h2[text()='Title']/following-sibling::p[1]
这个XPath路径表示选择class包含'content'的div元素下的第一个h2元素,然后选择其下一个兄弟元素中的第一个p元素。文章来源地址https://www.toymoban.com/news/detail-803174.html

到了这里,关于Python 的 Selenium 库进行元素定位时,XPath的详细用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自动化测试学习(六)-selenium定位元素之CSS选择器详细用法

    目录 1.通过class属性定位 2.通过id属性定位 3.通过标签名定位 4.其他方法定位    CSS是一种语言,它可以比较灵活的选择控件的任意属性,一般情况下比Xpath快,下面我们详细介绍CSS的用法。CSS常见语法如下表所示:  选择器 示例 描述 .class .s_ipt 选择class=\\\"s_ipt\\\"的所有元素 #i

    2024年01月17日
    浏览(41)
  • selenium通过xpath定位text换行的元素

    DOM元素(该元素是换行的,不能通过普通xpath定位):  可使用下面xpath定位该div 解释一下就是:定位“ 子节点的text是[5] 且 子节点弟弟的text是[点] ”的div

    2024年02月11日
    浏览(48)
  • 【Python】Python 模块用法:selenium 4 版本页面元素定位方法汇总

    目录 一、定位页面元素方法源码说明  (1)Webdriver.common (2)selenium.webdriver.common.by (3)By 二、定位页面元素方法用法汇总 (1)2.0 及以下低版本 selenium :By 定位页面元素方法用法(可忽略) (2)3.0 ~ 3.9 版本 selenium:By 定位页面元素方法用法 (3)4.0 ~ 4.9 版本 selenium:

    2023年04月13日
    浏览(76)
  • Selenium定位元素的方法css和xpath的区别!

    selenium是一种自动化测试工具,它可以通过不同的定位方式来识别网页上的元素,如id、name、class、tag、link text、partial link text、css和xpath。 css和xpath是两种常用的定位方式,它们都可以通过元素的属性或者层级关系来定位元素,但是它们也有一些区别: css: css是级联样式表,

    2024年02月04日
    浏览(43)
  • 【selenium】八大元素定位方式|xpath css id name...

    目录 一、基础元素定位 二、cssSelector元素定位——通过元素属性定位 三、xpath元素定位——通过路径  1 、xpath绝对定位 (用的不多) 缺点:一旦页面结构发生变化(比如重新设计时,路径少两节),该路径也随之失效,必须重新写 2、 xpath相对定位 2.1  路径解释: 2.2  定

    2024年02月22日
    浏览(39)
  • 解决selenium定位不到xpath元素: “NoSuchElementException: Message: no such element: Unable

    在使用selenium爬取的时候用xpath定位元素,最常见的报错就是这个,通常要么是xpath写错了,要么就是元素还没加载出来。 如果是前者可以用谷歌浏览器的xpath helper插件检查xpath是否正确,后者可以增加等待时间或使用以下语句等到元素可见再执行后续操作: 这次我遇到的问题

    2024年02月16日
    浏览(29)
  • Python+selenium自动化八大元素定位方法及实例(超详细)

    目录 一、selenium模块中的find_element_by_id方法无法使用 二、Python+selenium自动化八大元素定位方法 使用场景: 1、通过id属性定位:driver.find_element(By.ID,\\\"value\\\") 2、通过name属性定位:driver.find_element(By.NAME,\\\"value\\\") 3、通过class属性定位:driver.find_element(By.CLASS_NAME,\\\"value\\\") 4、通过tag_name属

    2024年02月19日
    浏览(36)
  • 用selenium和xpath定位元素并获取属性值以及str字符型转json型

    页面html如图所示: 要使用xpath定位这个div元素,并且获取其属性data-config的内容值。  结果如图:  蓝色的为str类型,红色的为json类型。 那么先得到的是str类型,如何转换为json类型呢?使用如下代码即可。 import json json_attr=json.loads(str_attr) 读取json数据用json_attr[\\\'video\\\'][\\\'url\\\'

    2024年02月08日
    浏览(31)
  • Python Selenium xpath 定位方法详解

    目录 简介 使用id定位 使用class定位 其他属性定位 相对定位 绝对定位 位置索引定位 文本定位 文本模糊定位 属性值模糊匹配 使用逻辑运算符and、or -》xpath 是XML Path的简称,由于HTML文档本身就是一个标准的XML页面,所以我们可以使用Xpath 的用法来定位页面元素。 -》xpath 这种

    2024年02月08日
    浏览(27)
  • python+selenium使用xpath定位的问题

    python用selenium调chrome爬取网页信息遇到报错: 1.InvalidSelectorException: Message: invalid selector: The result of the xpath expression is [object Attr]. It should be an element 原因是selenium不支持从xpath中直接获取text文本信息。 xpath表达式修改为: 2.Message: no such element: Unable to locate element: xpath表达式一直

    2024年02月12日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包