关于xpath相对路径前加点与不加点的区别
转自:https://blog.csdn.net/qingmu_9923/article/details/51771602
最近在用selenium做web工程自动化测试的相关项目,会经常用到元素定位,由于原项目开发中并不是所有关键元素都加有id,所以xpath就成为了使用最为频繁的定位方式。
众所周知,xpath定位分为绝对定位和相对定位,如果以单斜线“/”开头则表示为从根目录下开始的绝对路径,以双斜线“//”开始的是相对路径。为了适应页面结构的改变,一般相对路径较为常用。selenium2中的webDriver提供了findElement(By)的方法,该方法中的参数By就可以是xpath的形式。我在工作中也大多使用此方法,由于fireFox提供的fireBug和firePath插件获取元素非常方便,所以经常用插件定位。但是奇怪的是每次定位双斜线的前面总是会多一个点:“.//”,但是去掉点之后似乎也没有什么影响,因此一直没有在意。但是后来的一件是让我对此改变了看法。
- <span style="font-family:SimSun;"><a>
- <b>blank</b>
- <c id="z">
- <b>content</b>
- </c>
- </a></span>
上面是一个简单的示例文档结构,在selenium中webElement也有一个findElement的方法,用于查找该元素下的子孙元素,假如我们已经获得了C元素,我们现在要获取C元素下的b元素:请注意以下两种代码的区别。
写法一:webElement b = C.findElement(By.xpath(".//b"))
写法二:webElement b = C.findElement(By.xpath("//b"))
其实两个代码的区别就在于xpath路径加不加点的问题上,事实证明,写法一取到的是包含blank的b元素,而写法二取到的是包含content的b元素。所以其实加点和不加点是有很大区别的,在查找整个页面的时候没有区别,但是在当前元素调用此方法时就有了,加点代表取当前元素为根节点向下查找元素,而不加点是以整个页面为根元素向下查找的。所以firePath这个插件还是很智能的,默认给xpath路径加上了点,以防止在当前元素下找元素时发生错误。
关于xpath相对路径前加点与不加点的区别的更多相关文章
- 网站开发进阶(四十三)html中,路径前加“/” 与不加“/”的区别
网站开发进阶(四十三)html中,路径前加"/" 与不加"/"的区别 前言 <script src="js/downloadify.js&quo ...
- web中的CSS、Xpath等路径定位方法学习
今天不到八点就到公司了,来的比较早,趁着有点时间,总结下web中的CSS.Xpath等路径定位定位的方式吧! 简单的介绍下xpath和css的定位 理论知识就不罗列了 还是利用博客园的首页.直接附上代 ...
- c#关于路径的总结(转) 虚拟路径波浪号~和斜杠/的区别
c#关于路径的总结(转) 来源:http://www.cnblogs.com/yugongmengjiutian/articles/5521165.html 前一段时间写代码时经常遇到获取路径问题 ...
- xpath路径前可用方法测试
$x("string-length(//h3[@class='t'])") 8 $x("string(//h3[@class='t'])") "XPa ...
- Selenium之xpath绝对路径表示法
xpath写法: 绝对路径:以/开始,逐个增加节点用/分割 特点:不能跨级.类似css中的直接子元素选择器 相对路径:用两个斜杠 // 如 //div//p//a 通配符:xpath也有 ...
- os.path.join() - 忽略绝对路径前的参数
os.path.join()会忽略第一个绝对路径之前的参数! 示例: >>> import os >>> os.path.join('/home', 'mushro ...
- 请求路径@PathVariable与请求参数@RequestParam的区别
转自:http://www.iteye.com/problems/101566: http://localhost:8080/Springmvc/user/page.do?pageSize=3& ...
- oracle和sql server中,取前10条数据语法的区别
在sql server中,取数据中前10条语句,我们可以用top 10 这样语句,但是oracle就没有这个函数,接下来介绍它们之间的区别 1.sql server 取前10语句和随机10条的语法 - ...
- 获取文件绝对路径:__FILE__与$_SERVER[SCRIPT_FILENAME'']的区别
1.获取路径 (1)__FILE__ 获取某文件在本地目录中的绝对路径,(也就是说,哪个文件执行这行代码,它就获取哪个文件的绝对路径) (2)$__SERVER['SCRIPT_FILENAME'] ...
随机推荐
- miniUI Grid添加汇总行,Grid绑定数据,IDEA免编译设置
坑1: 2017-6-5周二,上午解决了昨天摸索一下午的问题,使用miniui显示汇总行数据,要点有这么几个 在创建Grid div的时候一定要加上以下两个属性: //显示汇总行开关 showSumm ...
- 《C++标准程序库》学习笔记(一)C++相关特性
抱着本厚厚的<C++标准库>读了几天,想想也该写点关于用法的总结,一来怕今后容易忘记,二来将书上的事例重新敲一遍,巩固对程序库相关知识的了解.今天开第一篇,以后不固定更新.当然,笔者所读为 ...
- Git快速入门进阶篇
本文接着Git快速入门篇,继续探讨Git在管理项目中的一些应用. 远程仓库的使用 查看远程仓库 查看你已经配置的远程仓库服务器,可以运行 git remote 命令.指定选项 -v,会显示需要读写远程 ...
- IdentityServer4实战 - AccessToken 生命周期分析
一.前言 IdentityServer4实战这个系列主要介绍一些在IdentityServer4(后文称:ids4),在实际使用过程中容易出现的问题,以及使用技巧,不定期更新,谢谢大家关注.使用过id ...
- tomcat启动非常慢;连接oracle数据库失败,jdbc错误日志提示connection reset;测试主机间网络互通及数据库端口都正常
[判断确认:这时候大家可能要去检查一下/dev/random 这个设备档案.可以用cat /dev/random 来看它的内容,如果你发现他一直没显示任何内容﹝可能是乱码数字之类的﹞,那就是它出问 ...
- Storyboard中ViewController加载的四种方式
这个总结来自于<Programming iOS 10>一书: 1.storyboard的初始化ViewController,通过方法instantiateInitialViewContro ...
- Rafy 开源贡献中心 - 组织成立,并试运行一月小结
背景 最近两年,工作中虽然大量使用了 Rafy 框架作为各个产品.项目的开发框架.我是 2015 年的年中加入现在这家公司的,由于我个人工作太忙的缘故,一直没怎么编码,Rafy 框架底层的核心成长也比 ...
- Java Web Without SSM(前言)
是的,Spring,Mybaties确实给我们带来了方便的轻量级JavaWeb开发,但是,对于大部分中小系统来说,分层,框架,规范,已经成为一种累赘.实际的程序开发过程中,大部分时间都花在了" ...
- JDK安装:CentOS和Windows环境
Windows上JDK安装 1:下载jdk. 地址在 http://www.oracle.com/index.html >downloads>se>Ja ...
- flex与js通信、在浏览器中打开新窗口
一.flex与js通信(通过flex调用js方法) var urlR:URLRequest = new URLRequest("javascript:test('from flex')&qu ...