转:http://blog.csdn.net/u012145166/article/details/50342569

1.name和id

其中使用到了name和id定位。但有时候由于开发人员的疏忽或者开发习惯的问题,会漏写name或者id属性。或者有时候如果页面很庞大,元素很多,也有可能出现两个一不小心定义了两个重复的id的情况。这样就无法进行唯一定位了。

2.xpath

前面所说的id和name属性就相当于是一个人的姓名。你可以通过姓名找到他。但是同名同姓的问题是存在的,而且有时候也不知道他的姓名,那就去就去他的家里找,一个人住的地方总是唯一的。所以这种方式几乎是万能的,能基本解决所有定位需求。

3.css

另外还有一种通过CSS进行定位的方式,这种方式也能解决大部分的定位问题,但是这种方法比较复杂,学习成本比较高。我自己也没有好好学习过,就不再介绍了。

4.使用firebug插件和firepath插件获取xpath和id,name

4.1插件的安装

那如何去获取定位所需要的id,name,xpath数据呢?因为Selenium默认是支持Firefox浏览器的,而Firefox又以其强大、数量庞大的可选插件著称,所以当然就会有相应的插件支持这个工作,也就是firebug和firepath。 
可能由于墙的原因,无法成功在线进行安装。可以在下载插件后,进行离线安装下载链接请猛戳这里。 
下载的文件无须解压,按下图方法安装即可。 

4.2使用示例

这里再以百度首页为例讲解两个插件的用法。 
打开网页后,按F12,可见到页面下方的一些可操作选项。

点击箭头1指向的这个鼠标形状的按钮,就可以开始定位元素了。点击要进行定位的元素,比如搜索编辑框。此时下方的网页源码处就会自动跳到相应的HTML代码处,方便直接查看其相应属性,就能从中获取我们所需要的name和id。

那怎么获取xpath呢?点击Firepath功能,进入Firepath视图,再次点击那个鼠标形状的按钮,开始选择元素。同样的,我们再选择编辑框。这时,页面就会自动显示出这个元素的xpath值,同时代码也会跳到相应的地方。

5.使用google chrome浏览器获取xpath和id,name

firefox能用,当然chrome浏览器也能支持啦,而且不需要安装插件。

5.1获取id,name

进入页面,按F12,安装如下步骤即可获取到元素的相关属性,就不再多说了。 

5.2获取xpath

在获取到的属性代码块上右击,点击copy xpath即可将xpath复制到剪贴板中 

6.xpath的使用

获取到后,如何去使用呢?其实使用就和获取一样简单,只需将原来的定位参数修改为“xpath= value”即可,value就是4.2步骤中获取到的xpath值。 
我们将上一篇的例子使用的定位方法切换为xpath方法,效果如下。

不过这里xpath看上去好像还是使用id来定位的,这是因为使用工具对xpath自动获取时有很多种方法,有绝对路径,也有相对路径。而这里就是使用相对路径方法里的直接按属性定位。 
我们不妨尝试获取一下右上角”登录”的xpath值。

是不是不太一样了?解释一下,这里先使用按id属性定位获取到了无序列表,即右上角这一排,然后再用相对路径定位到这个列表下的第七个元素“登录”。所以取得的值是”.//*[@id=’u1’]/a[7]“

学习使用Robot Framework自动化测试框架-web元素定位的更多相关文章

  1. Robot Framework自动化测试二(元素定位)

    前言 在学习的过程中,可能会误认为Robot framework 只是个web UI测试工具,更正确的理解Robot framework是个测试框架,之所以可以拿来做web UI层的自动化是国为我们加 ...

  2. 三年磨一剑,robot framework 自动化测试框架核心指南,真正讲透robot framework自动化测试框架(笔者新书上架)。

    序 关于自动化测试的工具和框架其实有很多.自动化测试在测试IT行业中扮演着越来越重要的角色,不管是在传统的IT行业还是高速发展的互联网行业或是如今的大数据和大热的人工智能领域,都离不开测试,也更加离不 ...

  3. Robot Framework自动化测试框架核心指南-如何使用Java编写自定义的RobotFramework Lib

    如何使用Java编写自定义的RobotFramework Lib 本文包括2个章节 1. Robot Frdamwork中如何调用java Lib库 2.使用 java编写自定义的Lib 本文作者为: ...

  4. Robot Framework自动化测试框架核心指南-如何做好自动化测试平台框架的设计

    自动化测试如果需要能高效快速的支撑软件项目的测试,项目的快速迭代以及上线,除了以上我们介绍的需要许多的Lib来支持以及需要高效的去编写自动化测试案例外,还需要一个好的自动化测试框架平台来支撑我们的自动 ...

  5. Robot Framework自动化测试框架初探

    Robot Framework是一款python语言编写,通用的功能自动化测试框架.它使用了比较易用的表格数据语法,基于关键字驱动测试,主要用来验收测试和验收测试驱动开发(ATDD). 本文主要介绍R ...

  6. 基于python3环境下搭建Robot Framework 自动化测试框架(一)

    大家都知道,Robot Framework 是基于python2 环境 的一套自动化测试工具,据说python 2 到2020年不维护,现在用python 3 的环境搭建Robot Framework ...

  7. Robot Framework 教程 (2) - 页面元素定位

    上一篇文章中,简单模拟了一个baidu搜索并截图的过程,在搜索过程中,我们需要对搜索框.搜索按钮进行定位.本篇文章主要介绍一下具体的定位方法. 我们的脚本如下: *** Settings *** Li ...

  8. appium+python搭建自动化测试框架_Appium元素定位(二)

    Appium元素定位: 工具:Android\android-sdk\tools    uiautomatorviewer.bat 1. id定位: self.driver.find_element_ ...

  9. Robot Framework自动化框架搭建的步骤

    我把自己之前搭建Robot Framework自动化测试框架的步骤整理了一下,感兴趣的同学可以参考一下.   Robot Framework自动化测试框架+ 可视化编辑工具RIDE+Selenium2 ...

随机推荐

  1. ios之申请后台延时执行和做一个假后台的方法(系统进入长时间后台后,再进入前台部分功能不能实现)

    转自:http://sis hu ok.com/forum/blogCategory/showByCategory.html?categories_id=138&user_id=10385   ...

  2. mysql高可用方案总结性说明

    MySQL的各种高可用方案,大多是基于以下几种基础来部署的(也可参考:Mysql优化系列(0)--总结性梳理   该文后面有提到)1)基于主从复制:2)基于Galera协议(PXC):3)基于NDB引 ...

  3. 哎呀,发现自己不会用模块的方式用kprobe啊,弱爆了

    在内核外面编译模块,会报warning函数名undefined的错误,解决方法是把函数给export出来:EXPORT_SYMBOL 一直以来,用kprobe比较多的是kprobe event的用法, ...

  4. 07SpringMvc_jsp到jsp的控制器_ParameterizableViewController

    本文主要讲的是控制器,Action继承什么类.记得Springmvc系列的第一篇文章说过.SpirngMVC的实现流程.

  5. 【C#】【Thread】上下文同步域SynchronizationAttribute

    上下文同步:使用SynchronizationAttribute为ContextBoundObject对象创建一个简单的自动的同步. 这种同步方式仅用于实例化的方法和域的同步.所有在同一个上下文域的对 ...

  6. [转]PHP 获取服务器详细信息代码

    转自:http://jingyan.baidu.com/article/fdbd4277049c8bb89e3f4893.html 获取系统类型及版本号: php_uname() (例:Windows ...

  7. Contains Duplicate II

    Given an array of integers and an integer k, find out whether there there are two distinct indices i ...

  8. 基于.Net FrameWork的 RestFul Service

    关于本文 这篇文章的目的就是向大家阐述如何在.net framework 4.0中创建RestFul Service并且使用它. 什么是web Services,什么是WCF 首先讲到的是web Se ...

  9. JavaScript原型链和instanceof运算符的暧昧关系

    时间回到两个月前,简单地理了理原型链.prototype以及__proto__之间的乱七八糟的关系,同时也简单了解了下typeof和instanceof两个运算符,但是,anyway,试试以下两题: ...

  10. php 利用socket发送GET,POST请求

    作为php程序员一定会接触http协议,也只有深入了解http协议,编程水平才会更进一步.最近我一直在学习php的关于http的编程,许多东西恍然大悟,受益匪浅.希望分享给大家.本文需要有一定http ...