转: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. 创建Java Web监听器

    之前从Java web一路学习过来,一直没有学习过Servlet容器类的一些高级用法,因为学完简单的JSP以及Servlet编写之后就开始了Spring的学习 对web应用的一些常用变量进行 appl ...

  2. 部署Zipkin分布式性能追踪日志系统的操作记录

    Zipkin是Twitter的一个开源项目,是一个致力于收集Twitter所有服务的监控数据的分布式跟踪系统,它提供了收集数据,和查询数据两大接口服务. 部署Zipkin环境的操作记录:部署Zipki ...

  3. WPF用ShowDialog()弹出窗体时控制该窗体的显示位置,并传值回父窗体

    原文:http://blog.csdn.net/kiss0622/article/details/5852153 方法一: 1.父窗口代码 Window1.xaml.cs private void B ...

  4. 卫星轨道和两行数据TLE

    最近由于Sino-2和北斗的关系,很多网友贴了表示卫星运行轨道的TLE数据.这里想对卫星轨道参数和TLE的格式做一个简单介绍.虽然实际上没有人直接读TLE数据,而都是借助软件来获得卫星轨道和位置信息, ...

  5. echo "scale=100; a(1)*4" | bc -l 输出圆周率

    突然看到echo "scale=100; a(1)*4" | bc -l可以输出圆周率,很惊奇,后来发现很简单. 首先bc是“basic calculator”的缩写,就是初级的计 ...

  6. MySQL server has gone away的解决方法

    用Python写了一个http服务,需要从mysql读数据库,第一天还好好的,第二天突然不行了.报错如下: pymysql.err.OperationalError: (2006, 'MySQL se ...

  7. LeetCode:Gray Code(格雷码)

    题目链接 The gray code is a binary numeral system where two successive values differ in only one bit. Gi ...

  8. textfield控制光标开始位置

    //    UIView *paddingView1 = [[UIView alloc] initWithFrame:CGRectMake(0, 64, self.view.frame.size.wi ...

  9. C#本质论读书笔记:第一章 C#概述|第二章 数据类型

    第一章 1.字符串是不可变的:所有string类型的数据,都不可变,也可以说是不可修改的,不能修改变量最初引用的数据,只能对其重新赋值,让其指向内存中的一个新位置. 第二章 2.1 预定义类型或基本类 ...

  10. c# 技巧之 泛型方法

    泛型 指的是编译时不需要指定具体的参数类型,可以在运行时动态地赋予某一种数据类型的机制.  相信很多人对泛型类并不陌生,像Dictionary,List等结构都属于泛型类.有趣的是,一个函数/方法也可 ...