文章摘自:https://www.cnblogs.com/fnng/p/3901391.html

不要误认为Robot framework 只是个web UI测试工具,更正确的理解Robot framework是个测试框架,之所以可以拿来做web UI层的自动化是国为我们加入了selenium2的API。

过验证id 、name ,xpath 、css 四种定位方式是可以的,尤其后两种是“万能的”,所以可以解决99%的定位问题。

id 和name 定位

百度搜索框和搜索按钮

<input id="kw" class="s_ipt" type="text" maxlength="" name="wd" autocomplete="off">
……
<input id="su" class="bg s_btn" type="submit" onmouseout="this.className='bg s_btn'" onmousedown="this.className='bg s_btn s_btn_h'" value="百度一下">

根据上面的例子,百度输入框可以取id 或 name进行定位。(前提是id和name的值在当页面上唯一)

在Robot framework 中就是这样写的:

或者使用name定位

Input text 用于输入框的关键字,“robot framework学习”是要给输入框输入的内容。

Click Button是按钮点击的关键字。

xpath定位

假如,一个人没身份证号没名字怎么找呢?想想你是怎么找朋友吃饭的,他手机不通,电话不回呢?直接上他家去呗,那你一定有他家住址,xx市xx区xx路xx号。Xpath 就可以通过这种层级关系找到元素。

来看看百度输入框在整个页面上的位置吧:

1、Xpath的绝对路径:

Xpath=/html/body/div[1]/div[1]/div[1]/div[1]/div[1]/form/span[1]/input

我们可以从最外层开始找,html下面的body下面的div下面的第4个div下面的....input标签。通过一级一级的锁定就找到了想要的元素。

在Robot framework 中就是这样写的:

2、Xpath的相对路径:

绝对路径的用法往往是在我们迫不得已的时候才用的。大多时候用相对路径更简便。

2.1、元素本身:

Xpath同样可以利用元素自身的属性:

Xpath = //*[@id=’kw1’]

//表示某个层级下,*表示某个标签名。@id=kw1 表示这个元素有个id等于kw1 。

当然,一般也可以制定标签名:

Xpath = //input[@id=’kw1’]

元素本身,可以利用的属性就不只局限为于id和name ,如:

Xpath = //input[@type=’text’]

Xpath = //input[@autocomplete=’off’]

但要保证这些元素可以唯一的识别一个元素。

2.2、找上级:

  当我们要找的一个人是个刚出生的婴儿,还没起名子也没有入户口(身份证号),但是你会永远跟在你父亲的身边,你的父亲是有唯一的名字和身份证号的,这样我们可以先找到你父亲,自然就找到你的。

元素的上级属性为:

找爸爸:

xpath =//span[@class='bg s_ipt_wr quickdelete-wrap’]/input   注:使用该路径查询提示找不到(原因未知)

如果爸爸没有唯一的属性,可以找爷爷:

xpath = //form[@id="form"]/span/input    注:单引号需是英文的,否则会报错:不是合法的xpath表达式

这样一级一级找上去,直到html ,那么就是一个绝对路径了。

2.3、布尔值写法:

  如果一个人的姓名不是唯一的,身份证号也不是唯一的,但是同时叫张三 并且 身份证号为123 的人却可以唯一的确定一个人。那么可以这样写:

Xpath = //input[@id=’kw1’ and @name=’wd’]

可以and ,当然也可以or :

Xpath = //input[@id=’kw1’ or @name=’wd’]

但or的实际意义不太。我们一般不需要说,找的人名字或者叫张三,或者身份证号是123 也可以。

CSS定位

Css的定位更灵活,因为他它用到的更多的匹配符和规格。

同样以百度输入框的代码,我们来看看CSS如何定位。

<form id="form" class="fm" action="/s" name="f1">
  <span class="bg s_ipt_wr">
    <input id="kw" class="s_ipt" type="text" maxlength="" name="wd" autocomplete="off">

id定位:

css=#kw1

class定位:

css=.s_ipt

其它属性:

css=[name=wd]

css=[type=text]

css=[autocomplete=off]

父子定位:

css=span > input

css=form > span > input

根据标签名定位:

css=input

总结:同样一个元素,根基CSS的不同规则,可能有几十上百种写法。CSS更灵活强大,但是相比xpath 的学习成本为更高。但是css和xpath 两种定位方式是一定要学会一种,不然你的自动化工作更无法开展。

robot framework学习二-----元素定位的更多相关文章

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

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

  2. Selenium webdriver 学习总结-元素定位

    Selenium webdriver 学习总结-元素定位 webdriver提供了丰富的API,有多种定位策略:id,name,css选择器,xpath等,其中css选择器定位元素效率相比xpath要 ...

  3. [Robot Framework] 学习资料

    https://www.cnblogs.com/pachongshangdexuebi/category/981644.html Robot Framework学习笔记(一)------环境搭建 Ro ...

  4. robot framework学习笔记之二———变量

    Robot Framework的变量分为标量, 列表和字典, 分别使用语法格式 ${SCALAR}, @{LIST} 和 &{DICT} 来定义. 此外, 环境变量可以直接使用语法 %{ENV ...

  5. Robot Framework 学习笔记(二)-------第一个脚本

    robot Framework环境搭建好之后先来一个简单的脚本跑一下 一.新建项目 二.新建测试套件  三.创建测试用例 四.导入Selenium2Library库 因为RF框架编写基于web 的测试 ...

  6. robot framework测试驱动无法定位页面元素

    robot framework错误提示: [ WARN ] Keyword 'Capture Page Screenshot' could not be run on failure: NoSuchW ...

  7. robot framework学习笔记2

    声明:本笔记都只是自己根据大牛虫师的robot系列文档学习记录的,学习的话还请移步虫师博客:https://www.cnblogs.com/fnng/ 非常感谢大牛的分享,带小白一步一步入门   F5 ...

  8. Robot Framework学习笔记(十)------Selenium2Library库

    一.安装selenium2library库 如果已经安装了pip,则使用管理员模式打开windows命令行,输入pip install robotframework-selenium2library, ...

  9. Robot Framework 学习资源汇总

    学习网站 http://robotframework.org/ http://www.testtao.cn/?cat=43 https://www.jianshu.com/c/483e8ffcbc79 ...

随机推荐

  1. call()的个人理解

    先看两道道面试题 面试题1: var number = 50; var obj = { number: 60, getNum: function() { var number = 70; return ...

  2. Linux中找到占用cpu最高的线程

    在工作中,经常会碰到CPU占用100%的情况,那如何找到是那个线程占用了cpu呢? 1. top命令,找到cpu占用最高的进程 2. 查看该进程的线程, top  -p <pid> 3. ...

  3. linux命令: 两个查找工具 locate,find

    linux 中有很多查找工具,今天主要讲解locate,find两个工具. 1.locate (1)查询系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db 注意:如果这 ...

  4. 使用jsonp请求本地json文件

    使用jsonp解决请求本地文件跨域问题 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  5. mysql报错Ignoring the redo log due to missing MLOG_CHECKPOINT between

    mysql报错Ignoring the redo log due to missing MLOG_CHECKPOINT between mysql版本:5.7.19 系统版本:centos7.3 由于 ...

  6. java框架之Struts2(1)-简介及入门

    简介 Struts2 是一个基于 MVC 设计模式的 Web 应用框架,它本质上相当于一个 servlet,在 MVC 设计模式中,Struts2 作为控制器 (Controller) 来建立模型与视 ...

  7. ubuntu12.04下编译Linux tina 2.1/android经验

    用的是osboxes下的vdi. 编译Linux 1. 不能在root用户下操作 2. 执行 make kernel_menuconfig 报错,需要 apt-get install zlib1g z ...

  8. asp.net 导出excel--NPOI

    1.使用OLEDB导出Excel ,这种方式有点慢,慎用 /// <summary> /// 使用OLEDB导出Excel /// </summary> /// <par ...

  9. PowerShell 语法备忘

    1.挡可能出现 .0 的时候需要加上引号 2.使用 -Join 或者 + 进行字符串拼接 3.在cmd 命令下可以使用 set /a  s=1+2  表示需要进行计算,而不是拼接

  10. AIX更改用户组

    1:先 修改 user: smit chuser 把id 号给改了.成功! 2:在 修改group 的时候报警告: smit chgroup : can not update the /etc/pas ...