Robot framework之元素定位实战

1.1  id 和name 定位

Web页面都是由许多标签和元素组成的,每个标签或元素都是很多属性,好比一个人   id 和name 可以看作一个人的身份证号和姓名。下面看下教育局招生系统的用户名输入框的标签id 和name属性值。

<input id="txtUserName" class="form-control account-input" type="text" required="" name="account" autofocus="" placeholder="请输入帐号" autocomplete="off"/>

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

id = txtUserName

name = account

在Robot framework 中代码实现:

1.2  Link 定位

Link定位就是根据元素的文本信息进行定位。

项目例子:

代码实现:

1.3  xpath 定位

XPath 是一种在XML 文档中定位元素的语言。因为HTML 可以看做XML 的一种实现,所以selenium用户可是使用这种强大语言在web 应用中定位元素。

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

4.2.1 xpath 的绝对路径

1、xpath 的绝对路径:

xpath = /html/body/div[1]/div[4]/div[2]/div/form/span[1]/input

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

4.2.2 xpath 的相对路径

绝对路径易读性很差,而且很容易受页面某一元素的调整而失效,绝对路径的用法往往是在我们迫不得已的时候才用的。大多时候用相对路径更简便。相对路径的定位有多种方法。

一)元素本身

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

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

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

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

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

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

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

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

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

项目例子:

代码实现:

二)通过找上级

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

元素的上级属性为:

代码实现:

xpath = //div[@class=’ mar’]/input

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

xpath = //form[@id=’ loginForm’]/div[2]/input

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

三)布尔值写法:

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

Xpath = //input[@id=’ txtUserName’ and @name=’ account’]

可以and ,当然也可以or :

Xpath = //input[@id=’ txtUserName’ or @name=’ account’]

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

1.4  css 定位

CSS(Cascading Style Sheets)是一种语言,它被用来描述HTML 和XML 文档的表现。CSS 使用选择器来为页面元素绑定属性。这些选择器可以被selenium 用作另外的定位策略。

CSS 可以比较灵活选择控件的任意属性,一般情况下定位速度要比XPath 快,但对于初学者来说比较难以学习使用,下面我们就详细的介绍CSS 的语法与使用。

CSS 选择器的常见语法:


选择器


例子


描述


*


*


class 选择器,选择class="intro"的所有元素


.class


.intro


选择所有元素


#id


#firstname


id 选择器,选择所有id="firstname"所有元素


element


p


元素所有<p>元素


element > element


div > input


选择父元素为<div> 元素的所有<input> 元素


element + element


div + input


选择紧接在<div> 元素之后的所有<p> 元素


[attribute=value]


[target=_blank]


选择target="_blank" 的所有元素

通过class 属性定位:

css=. mar

css=. form-signin

csscss_selector()方法用于CSS 语言定位元素,点号(.)表示通过class 属性来定位元素。

通过id 属性定位:

css=#kw

css=#su

井号(#)表示通过id 属性来定位元素。

通过标签名定位:

css=input

在CSS 语言中用标签名定位元素不需要任何符号标识,直接使用标签名即可,但我们前面已经了解到标签名重复的概率非常大,所以通过这种方式很难唯一的标识一个元素。

通过父子关系定位:

css=span>input

上面的写法表示有父亲元素,它的标签名叫span,查找它的所有标签名叫input 的子元素。

通过属性定位:

css=input[autocomplete=‘off‘]

css=input[maxlength=‘100‘]

css=input[type=‘submit‘]

在CSS 当中也可以使用元素的任意属性,只要这些属性可以唯一的标识这个元素。

组合定位:

我们当然可以把上面的定位策略组合起来使用,这样就大大加强了元素的唯一性。

css=span. form-signin>input. mar

css=span. form-signin>input# txtUserName

有一个父元素,它的标签名叫span,它有一个class 属性值叫form-signin,它有一个子元素,标签名叫input,并且这个子元素的class 属性值叫mar。好吧!我们要找的就是具有这么多特征的一个子元素。

项目例子:

代码实现:

时间: 2024-10-01 02:43:22

Robot framework之元素定位实战的相关文章

Robot Framework自动化测试---元素定位

不要误认为Robot framework 只是个web UI测试工具,更正确的理解Robot framework是个测试框架,之所以可以拿来做web UI层的自动化是国为我们加入了selenium2的API.比如笔者所处工作中,更多的是拿Robot framework来做数据库的接口测试,当然,需要先将相关的数据库包导入. 那么测试框架的本质是什么?个人觉得有以下几个方面. 1.比较 测试实质就是"比较",在测试之前需要先写用例,假设经过各种操作之后会得到一个预期的结果,然后,在测试的

Robot Framework自动化测试-元素定位之xpath

用xpath定位元素几乎是万能的了,可以定位到99%的元素: 如果一个元素没有id 没有name那我们该怎么定位该元素了,第一想到的就是用xpath了. 在网上copy了一段代码,就以这个做说明吧,xpath定位元素分相对路径和绝对路径,主要说明下相对路径的用法. 示例代码如下: <html> <body link="#0000cc"> <div id="wrapper" style="display: block;"

Robot Framework+WebDriver元素定位

Selenium支持的定位方式: 常用的定位方式有id,name,xpath等…… 上一篇中的登陆实例,定位使用xpath后的样式为 XPath定位 ——使用属性名称为元素:xpath=//input[@name='']; ——使用部分属性值定位元素: ——使用值来匹配任意属性及元素:xpath=//input[@*='username']; 注:后续会对XPath定位进行详细的补充~

Selenium2学习-009-WebUI自动化实战实例-007-Selenium 8种元素定位实战实例源代码(百度首页搜索录入框及登录链接)

此 文主要讲述用 Java 编写 Selenium 自动化测试脚本编写过程中,通过 ID.name.xpath.cssSelector.linkText.className.partialLinkText.tagName 的实战实例源代码演示 Selenium 元素定位的 8 种方法,源代码测试通过日期为:2015-01-26 00:18,请知悉.注意:其中通过 tagName 定位元素时,返回的是一个 WebElement 的数组,需要根据实际的测试需求对其进行进一步的处理. 希望能对初学 S

Robot Framework XPATH元素的定位(如何获取一个动态或具体的元素)

前提部分(可略过):对于初学者来说,元素定位的方式相对直接.粗糙一点.比如,用鼠标放在一个字符上点击右键查看元素,或者先点击F12再查看元素,大多情况下这种方式都是可行的.而我们最需要关注的也是容易阻塞我们进度的,往往是那些不能直接使用鼠标右键定位的元素.其实都是xpath的元素定位问题,只是方式不一样.此时就要去构建元素的表达式或者说是从F12里提取一些元素进行组建,从而得出一个你可以用来操作的元素.比如:获取N个元素后,根据下标进行选取你要操作的元素,这时就要进行构建元素的表达式,而不能通过

Robot Framework之测试用例分层实战

1.1  测试用例的第一层(交互层) 1. 创建项目资源(Resource). 操作步骤: 点”项目名称”->右键,选New Resource,在弹窗Name 输入框输入资源名称 mykeywork->新建项目资源. 2.给新建的项目资源导入Selenium2Library库. 3.创建自定义关键字(New User Keyword). 操作步骤: 点”项目资源”->右键,选New User Keyword,在弹窗Name 输入框输入资源名称 打开浏览器->新建用户关键字. 4.给

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

说明: 不要误认为Robot framework 只是个web UI测试工具,更正确的理解Robot framework是个测试框架,之所以可以拿来做web UI层的自动化是国为我们加入了selenium2的API.比如笔者所处工作中,更多的是拿Robot framework来做数据库的接口测试,当然,需要先将相关的数据库包导入. 那么测试框架的本质是什么?个人觉得有以下几个方面. 1.比较 测试实质就是“比较”,在测试之前需要先写用例,假设经过各种操作之后会得到一个预期的结果,然后,在测试的过

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

上一篇文章中,简单模拟了一个baidu搜索并截图的过程,在搜索过程中,我们需要对搜索框.搜索按钮进行定位.本篇文章主要介绍一下具体的定位方法. 我们的脚本如下: *** Settings *** Library Selenium2Library *** Test Cases *** firefox兼容性 Open Browser https://www.baidu.com/ ff Input Text id=kw LeetTest Click button id=su Sleep 2 Captu

Robot Framework 使用2 - 如果进行页面元素定位

上一篇文章中,简单模拟了一个baidu搜索并截图的过程,在搜索过程中,我们需要对搜索框.搜索按钮进行定位.本篇文章主要介绍一下具体的定位方法. 上一篇中,我们的脚本如下: *** Settings *** Library           Selenium2Library *** Test Cases *** firefox兼容性 Open Browser    https://www.baidu.com/    ff Input Text    id=kw    LeetTest Click