Selenium之xpath定位

文章详细介绍了Web自动化测试中find_element_by_XXX和find_elements_by_XXX方法,前者用于获取匹配的第一个元素,后者返回所有匹配的元素列表。重点讨论了XPath的绝对和相对定位,包括不同类型的定位表达式和辅助工具,强调了定位的稳定性、准确性及维护性。同时,提到了模糊匹配、轴定位等高级技巧。
摘要由CSDN通过智能技术生成

find_element_by_XXX    返回的是一个元素,匹配到的第一个,成员是WebElement对象

find_elements_by_XXX   返回页面当中匹配表达式的所有元素,结果是一个列表,列表的成员是WebElement对象

xpath定位:

绝对定位:/开头    父节点/子节点

    绝对路径:从根目录开始,一直到当前的目录。

    绝对定位:从根节点开始,一直到当前的节点。  节点顺序/节点位置

相对定位://开头//

    相对路径:相对参照物。//相对于前面节点。如果//在开头,那就是相对于整个html。

    定位原则:

        1、不依靠节点顺序和节点位置

        2、只要能够找得到匹配特征的元素就可以。

定位辅助小工具:

       F12 => Elements => Ctrl+F(查找)

相对定位表达式:

    1、//标签名[@属性名=值]

    2、//标签名[test()=值]    eg://a[test()="话题"]

    3、//标签名[contains(@属性名,值)]      //标签名[contains(test(),值)]

        eg://a[contains(@href,"TopicDiscuss")]

    注意:CSS定位是不支持文本和包含的定位方式

    4、* 标签名或者属性名都可以用*,表示匹配所有元素

    * 当单一属性无法唯一定位到元素 *

    组合条件

    逻辑:and  or

        //标签名[test()=值] and @属性名=值 and contains(@属性名,值)]

        //标签名[test()=值] or @属性名=值 or contains(@属性名,值)]

    * 仅靠元素本身的特征,已经无法唯一定位 *

    层级:

        //祖先节点//要找的节点     eg://div[@id="u1"]//a[@name="tj_login"]

        **注意:一般都会用//(祖先,子孙级别),不用/(只是父子级别),双斜杠更加灵活

        定位的原则:稳定,准确,好维护

    模糊匹配:

         starts-with:以**开头   eg://*[starts-with(@class,'s_i')]

    其他函数:

         去掉前后空格:normalize-space

         eg://*[normalize-space(text())='我已阅读并同意']

    轴定位:

        元素的兄弟姐妹,父母

    轴运算:

        通过父母来找要找的元素结点

        1、parent:父结点      注意:定位不能定位可以变动的元素  比如发布作业:当前显示的28,不能通过文本定位定位数字28

        2、ancestor:祖先结点 包括父

        通过兄弟姐妹来找要找的元素结点

        3、preceding-sibling:当前元素结点标签之前的所有兄弟结点

        4、following-sibling:当前元素结点标签之后的所有兄弟结点

        使用语法:

        已知的元素/轴名称::标签名称[@属性名=值]    注意:轴名称前用/单斜杠

        eg://span[test()="考勤"]/parent::a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Selenium中的XPath定位元素是一种基于XML文档结构的定位方式,可以通过元素的标签名、属性、文本内容等信息来定位元素。XPath定位元素的语法比较灵活,可以使用绝对路径或相对路径来定位元素,也可以使用逻辑运算符和函数来筛选元素。在Selenium中,可以使用find_element_by_xpath()方法来定位元素,例如: driver.find_element_by_xpath("//input[@id='username']") # 使用id属性定位输入框元素 driver.find_element_by_xpath("//button[contains(text(),'登录')]") # 使用文本内容定位登录按钮元素 driver.find_element_by_xpath("//div[@class='container']/ul/li[3]/a") # 使用相对路径定位导航栏第三个链接元素 需要注意的是,XPath定位元素的效率相对较低,如果可以使用其他定位方式,建议优先考虑。 ### 回答2: Selenium是一个常用的自动化测试工具,常用于Web应用的测试自动化,其中xpathSelenium中经常用到的一种元素定位方式。 XPath是XML Path Language的缩写,用于在XML文档中查找信息的一种语言。在Web应用中,利用XPath可以轻松定位网页中的元素,包括文本、链接、按钮等。 在Selenium中使用xpath定位元素,需要使用driver.find_element_by_xpath()方法,该方法可以接受一个xpath表达式作为参数,返回符合该表达式的第一个元素。 下面介绍几种常用的xpath表达式: 1.绝对路径定位元素:通过完整的路径定位元素,这种方法非常不建议使用,因为一旦页面结构变化,绝对路径也会随之改变。 例子:/html/body/div[1]/div[2]/ul/li[3]/a 2.相对路径定位元素:通过相对于当前元素的路径定位元素,相对路径是基于当前元素而言的,更加稳定。 例子://div[@class='content']/ul/li[3]/a 3.通过属性值定位元素:通过元素的属性值来定位元素,可以通过元素的id、class、name、value等属性进行定位。 例子://input[@id='kw'] 或 //input[@name='username'] 总之,xpath是在Selenium中非常重要的一种元素定位方式,XPath表达式的灵活性使其成为一种非常常用的选择器方式。建议根据实际情况,灵活运用xpath语法来定位元素,以保证脚本的稳定性和可靠性。 ### 回答3: Selenium是一个用于自动化测试的工具,它可以模拟用户行为,自动化地进行一些常见的测试任务。在测试中,XPath是一种常用的定位元素的方法。 XPath是一种用于在XML文档中定位元素的语言,它可以对XML文档进行遍历和查询,返回满足条件的元素或属性。在Selenium中,XPath可以用于定位Web页面中的元素,比如按钮、文本框、下拉菜单等。 在Selenium中使用XPath进行元素定位的步骤如下: 1. 打开浏览器并访问目标网站。 2. 在浏览器中定位需要被测试的元素。 3. 使用开发者工具或其他工具查看该元素的XPath路径。 4. 将XPath路径复制到Selenium测试脚本中。 5. 在Selenium中使用find_element_by_xpath()函数定位元素。 例如,下面这段代码可以在百度首页中定位搜索按钮: ```python from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.baidu.com') search_button_xpath = '//input[@class="s_btn"]' search_button = driver.find_element_by_xpath(search_button_xpath) search_button.click() ``` 这段代码中,我们使用Chrome驱动程序打开了百度首页,并找到了搜索按钮的XPath路径,然后使用find_element_by_xpath()函数找到了该元素并模拟了点击操作。这样,就可以自动化测试搜索功能了。 需要注意的是,XPath路径可能因为页面结构的变化而发生变化,因此需要时常检查XPath路径是否仍然有效。此外,XPath路径复杂度较高,不易维护,因此常见的元素最好使用id、class等属性进行定位
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值