Selenium webdriver中的xpath定位
使用selenium进行自动化测试,其实很多时候就是模拟用户的操作,在前端页面对元素进行操作,因此元素的定位在自动化测试中是至关重要的。关于如何
使用id,className,name,linkText这些简单的定位方式查找元素,本文将不多做介绍。
本文中主要介绍selenium webdriver中的核心定位方式——xpath定位。
1. xpath语法
//tagname[@attribute=‘value’]
其中,tagname表示标签名称,@后面跟随属性名称,等号后面是属性值。如果需要查找多重下级,则在父级的xpath路径后继续追加定位,例如://div[@id='car_genre_id']/div/div,表示 id是car_genre_id的div元素的子节点div的子节点div。
2. xpath的绝对路径和相对路径
1)单斜线‘/’代表绝对路径,表示该富豪后面的元素是上一级节点的子节点的一个,只能一级级按序向下查询,不能跳级;
2)双斜线'//'代表相对路径,表示下级任何子节点或者任何嵌套子节点中的一个,可以跳级;
举个栗子,在路径//div[@id='root']/input中,表示越过所有父节点,直接在整个html页面中查找id是'root'的div元素,因为div标签前是代表相对定位的双斜线'//';而对于input标签来说,它必须是id是'root'的div的一级子节点,它和div中间不能越过其他的层级,因为input标签前是代表绝对路径的单斜线'/' 。
3. 如何获取元素的xpath路径
大多浏览器的开发者模式中都具备了输出元素xpath路径的功能。以chrome为例,点击F12后,在DOM树中选中元素,右键> Copy > CopyXpath后,在记事本上黏贴,即可得到该元素的xpath路径。
4. 使用contains属性查找元素
contains表示查找属性包含该属性值value的页面标签元素,注意是包含,并不是完全等于,类似于sql查找语句中like的用法。
语法为: //tagname[contains(attribute1,'value1') and contains(attribute2,'value2') and ... ]
举个栗子,路径 //div[@id="root"]//div[contains(text(),'共'] ,表示在id是'root'的div中,越过层级关系,查找文本信息包含"共"的div元素;
路径//div[@id='root']//div[contains(className,'ant-Btn')], 表示在id是'root'的div中,越过层级关系,查找className属性中包含'ant-Btn'属性的元素;
5. 查找父级节点和平级节点
查找父级节点: xpath-to-some-element//parent::tagname
向前查找平级节点:xpath-to-some-element//preceding-sibling::tagname
向后查找平级节点:xpath-to-some-element//following-sibling::tagname
6. 使用xpath定位元素时需要注意的地方
1)保证xpath路径的唯一性。
一定要保证xpath路径在页面中是唯一的。如果不太确定,可以在chrome的开发者工具打开的情况下,点击ctrol+F,在弹出的输入框中输入xpath
的路径,观察当前页面下,以该路径查找到的元素是不是只有一个;
2)尽量不要使用通配符*
*表示可以是当前页面中的任意标签,这样在查找时会增大负载,尽量准确地写出标签名称。
3)建议使用相对路径定位
如果前面页面的元素结构发生调整,那么之前的绝对定位就会作废。而使用相对路径,可以减少定位对页面HTML元素结构的依赖性,且相对路径
往往长度较短,更加准确美观。在优化定位方式时,可以将此原则作为参考。
转载于:https://www.cnblogs.com/May-study/p/9851992.html
Selenium webdriver中的xpath定位相关推荐
- 在Selenium Webdriver中使用XPath Contains、Sibling函数定位
前言 在一般情况下,我们通过简单的xpath即可定位到目标元素,但对于一些既没id又没name,而且其他属性都是动态的情况就很难通过简单的方式进行定位了. 在这种情况下,我们需要使用xpath1.0内 ...
- Selenium WebDriver中的TestNG侦听器及示例
Java提供了不同的接口,使您可以修改TestNG行为. 这些接口在Selenium WebDriver中进一步称为TestNG侦听器. TestNG Listeners还允许您根据项目要求自定义测试 ...
- 总结Selenium WebDriver中一些鼠标和键盘事件的使用
在使用 Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为.比如使用鼠标单击.双击.右击.拖拽等动作:或者键盘输入.快捷键使用.组合键使用等模拟键盘的操作.在 W ...
- selenium webdriver 学习总结-元素定位
webdriver提供了丰富的API,有多种定位策略:id,name,css选择器,xpath等,其中css选择器定位元素效率相比xpath要高些,使用id,name属性定位元素是最可靠,效率最高的一 ...
- webdriver中常用的定位方法
目录 一.单数定位 二.复数定位 三.细讲xpath定位 3.1.xpath属性定位 3.2.xpath其他属性 3.3.文本属性 3.4.xpath标签 3.5.xpath层级 3.6.xpath索 ...
- 使用Python在Selenium WebDriver中获取WebElement的HTML源代码
我正在使用Python绑定来运行Selenium WebDriver. from selenium import webdriver wd = webdriver.Firefox() 我知道我可以抓住 ...
- selenium webdriver中执行js(java)
在代码中import org.openqa.selenium.JavascriptExecutor;就可以使用executeScript.executeAsyncScript这两个方法了 execut ...
- python 地址模糊匹配_使用python处理selenium中的xpath定位元素的模糊匹配问题
# 用contains,寻找页面中style属性值包含有sp.gif这个关键字的所有div元素,其中@后面可以跟该元素任意的属性名. self.driver.find_element_by_xpath ...
- java selenium iframe_如何使用java在Selenium WebDriver中处理iframe
4t43t4 在这种情况下,iframe下有一个iframe.我必须选择外部iframe去内部iframe并写入内部iframe中的主体. 接下来,我必须从内部iframe到外部iframe,然后单击 ...
最新文章
- ecshop /api/client/api.php、/api/client/includes/lib_api.php SQL Injection Vul
- 浏览器窗口控制---使用localStorage
- 关于Zend framework 里一段代码的疑问
- 多线程讲座【by lilei005】
- BZOJ2693:JZPTAP——题解
- hibernate使用sql语句查询实体时,要写上addEntity
- 网卡驱动修改服务器,改造INTEL网卡驱动使桌面型网卡支持Windows Server 2012、2016、2019系统...
- python汉化补丁包怎么安装_如何安装python包
- 苹果怎么应用分身_苹果ios/安卓微信双开技巧
- SAP B1 VS女士的Navision ERP的比较 - 知道如何选择软件
- OA办公系统能帮助企业做些什么?
- 2022谷粒商城学习笔记(二十五)支付宝沙箱模拟支付
- elasticsearch 支持中英文搜索和混合搜索
- TV新媒体电商发展遇瓶颈
- 3万字报告拆解:硅谷寒冬,投资人还在哪些赛道烧钱?|我在硅谷看未来
- 远程桌面连接服务器时,键盘不能正常打字
- Power BI——地图可视化(气泡地图Bubble Map)
- 隐形矫正计算机软件,数字化隐形正畸技术及口腔病例展示
- 电容笔和Apple Pencil的区别有哪些?双十二好用电容笔推荐
- 【攻略·转载·收藏】手把手教程 | 申请签证很难吗?靠你自己就能搞定!(以英国签证为例)
热门文章
- Python中的property类和@property装饰器
- ASP.NET2.0 菜单控件menu的动态静态用法
- ASP.Net导出EXCEL表(小结)
- python下雨动画特效_pygame用blit()实现动画效果
- leetcode - 5. 最长回文子串
- Multi_thread--Linux进程编程基础介绍
- Ubuntu在启动器中添加自定义程序快捷方式
- Spring Boot的启动器Starter详解
- 基于模型协同过滤推荐离线召回:ALS
- NLP(新闻文本分类)——基于机器学习的文本分类