上一篇文章中,简单模拟了一个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
        Capture Page Screenshot    ff.png
        Close Browser

这里我们用到了Selenium2Library进行浏览器控制。接下来查找Selenium2Library的官方文档,来查看如何进行页面元素定位。

在Github上搜索Selenium2Library,项目地址为

https://github.com/rtomac/robotframework-selenium2library

查看其wiki,可以找到它的官方文档

http://rtomac.github.io/robotframework-selenium2library/doc/Selenium2Library.html

其中的Locating or specifying elements 章节,介绍了进行元素定位的几种方法:

以脚本

Click Element    my_element

为例,定位方法可采用以下方法:

Strategy

Example

Description

描述

identifier

Click Element | identifier=my_element

Matches by @id or @name attribute

匹配 id 或 name 属性

id

Click Element | id=my_element

Matches by @id attribute

匹配 id 属性

name

Click Element | name=my_element

Matches by @name attribute

匹配 name 属性

xpath

Click Element | xpath=//div[@id='my_element']

Matches with arbitrary XPath expression

匹配 Xpath 表达式

dom

Click Element | dom=document.images[56]

Matches with arbitrary DOM express

匹配 DOM表达式

link

Click Element | link=My Link

Matches anchor elements by their link text

匹配锚点的链接文字

partial link

Click Element | partial link=y Lin

Matches anchor elements by their partial link text

匹配锚点的部分链接文字

css

Click Element | css=div.my_class

Matches by CSS selector

匹配 CSS

jquery

Click Element | jquery=div.my_class

Matches by jQuery/sizzle selector

匹配jQuery/sizzle选择器

sizzle

Click Element | sizzle=div.my_class

Matches by jQuery/sizzle selector

匹配jQuery/sizzle选择器

tag

Click Element | tag=div

Matches by HTML tag name

匹配元素的HTML tag 名称

default*

Click Link | default=page?a=b

Matches key attributes with value after first '='

匹配第一个=后面的关键属性

具体到我们的测试脚本

InputText    id=kw    LeetTest

这里我们采用的是使用id进行定位,找到了id为kw的文本框,并输入了关键字LeetTest。

接下来试着使用其它方法进行元素定位。首先从浏览器中打开baidu首页,使用调试工具查看输入搜索关键词的文本框元素,其html代码如下:

<input class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off" type="text">

根据文档中给出的几种定位方法,我们可将我们的测试脚本更改如下

1.Identifier:Identifier将会对id和name进行匹配,无论是id还是name,只要符合关键字要求,就将被匹配为所选元素。

这里我们可以使用其id作为关键字

Input Text    identifier=kw    LeetTest

或是name作为关键字

Input Text    identifier=wd    LeetTest

2.Name,Name只会对元素的name属性做匹配

Input Text    name=wd    LeetTest

3.Xpath

XPath即为XML路径语言,它是一种用来确定XML文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。XPath提供了绝对路径和相对路径两种定位方法。

首先使用绝对路径进行定位。绝对路径从页面的html文档最初部分开始,逐层向内进行定位。

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

但在实际使用中,baidu的首页会由于浏览器或环境的不同发生样式变化,对应的xpath绝对地址会发生变化,这个时候就需要使用xpath相对路径。xpath的相对路径

1)可以通过id/name等元素属性定位到目标位置

InputText    Xpath = /input[@id=’kw’]    LeetTest

2)也可以先确定一个相对固定的元素(这里我们以form为例),之后再从该元素开始,寻找相对位置的元素。

InputText    xpath = /form[@id=’form’]/span[1]/input   LeetTest

4.Css

使用css匹配策略,可以按照浏览器对页面元素进行渲染时的css匹配策略,定位到该元素。支持css语法中的 . # > 等关键字。

InputText    css=.s_ipt   LeetTest

InputText    css=#kw   LeetTest

InputText    css=[name=wd]   LeetTest

关于xpath以及css的详细定位方法,之后会进行详细描述,这里只给出了几个最简单的例子。

5.Jquery及sizzle

Sizzle是jQuery作者John Resig新写的DOM选择器引擎,速度号称业界第一。jquery从1.3开始,使用了新的选择器–sizzle。效率超过了以前的jquery版本以及目前能见到的其他选择器。

可以参考以下文章:

http://www.cnblogs.com/xesam/archive/2012/02/15/2352466.html

除以上几种方法外,在官方文档中还给出了dom、link 、 partial link 、 tag 、 default 等几种定位方案,相对以上介绍的5种方案来说,并不常用,这里不做过多描述。

以上即为Robot Framework在实际使用过程中常用的元素定位方法,基于这些方法,我们可以实现对多种格式元素的自动定位,以便于我们进一步部署自动化测试。

在我们实现了对元素的定位之后,我们需要做的是为脚本中的如搜索关键字等变量制定变量表,以批量进行自动化测试,在下一篇文章中,我们将对如何使用resource组织测试数据进行介绍

Robot Framework 教程 (2) - 页面元素定位的更多相关文章

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

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

  2. 学习使用Robot Framework自动化测试框架-web元素定位

    转:http://blog.csdn.net/u012145166/article/details/50342569 1.name和id 其中使用到了name和id定位.但有时候由于开发人员的疏忽或者 ...

  3. Robot Framework 教程 (3) - Resource及关键字 的使用

    From:http://www.cnblogs.com/buaawp/p/4754399.html Robot Framework 教程 (3) - Resource及关键字 的使用 在进行软件自动化 ...

  4. Robot FrameWork 教程链接

    1.  Robot Framework 教程: http://cgmblog.sinaapp.com/html/category/robot-framework 2.  Robot Framework ...

  5. java selenium webdriver实战 页面元素定位

    自动化测试实施过程中,测试程序中常用的页面操作有三个步骤 1.定位网页上的页面元素,并存储到一个变量中 2.对变量中存储的页面元素进行操作,单击,下拉或者输入文字等 3.设定页面元素的操作值,比如,选 ...

  6. 页面元素定位 XPath 简介

    页面元素定位 XPath 简介 本文所说的 Xpath 是用于 Selenium 自动化测试所使用到的,是针对XHTML网页而言的一种页面元素的定位表示法. XPath 背景 XPath即为XML路径 ...

  7. Python3.x:Selenium中的webdriver进行页面元素定位

    Python3.x:Selenium中的webdriver进行页面元素定位 页面上的元素就像人一样,有各种属性,比如元素名字,元素id,元素属性(class属性,name属性)等等.webdriver ...

  8. java selenium webdriver第二讲 页面元素定位

    自动化测试实施过程中,测试程序中常用的页面操作有三个步骤 1.定位网页上的页面元素,并存储到一个变量中 2.对变量中存储的页面元素进行操作,单击,下拉或者输入文字等 3.设定页面元素的操作值,比如,选 ...

  9. 5、通过Appium Desktop实现页面元素定位

    之前我们已经安装了Appium Desktop,下面就让我们使用Appium Desktop实现页面元素定位 1.首先我们打开Appium Desktop,进入如下界面,点击Start Server ...

随机推荐

  1. 【python】logging日志模块写入中文编码错误解决办法

    一.问题: 使用python的logging模块记录日志,有时会遇到中文编码问题错误. 二.解决办法: 在logging.FileHandler(path) 中添加指定编码方式 encoding='u ...

  2. python+soket实现UDP协议的客户/服务端中文聊天程序

    没什么特别的东西,网上烂大街的C/S框架.(基于windows 7 + python 3.4) 为了实现中文聊天,我加入了一点修改: msg.encode('utf-8') # msg 为输入(且将要 ...

  3. HDU 6191 2017ACM/ICPC广西邀请赛 J Query on A Tree 可持久化01字典树+dfs序

    题意 给一颗\(n\)个节点的带点权的树,以\(1\)为根节点,\(q\)次询问,每次询问给出2个数\(u\),\(x\),求\(u\)的子树中的点上的值与\(x\)异或的值最大为多少 分析 先dfs ...

  4. 菜鸟vimer成长记——第2.2章、visual模式

    vi是没有可视模式的.然而大多数编辑软件都都是有可视模式.所以我猜测vim是几乎迫于无奈才有了visual模式. 个人建议,能不用就不用.这样能直接在头脑里处理好文本,锻炼文本处理能力,同时能转变过来 ...

  5. 2018年美国大学生数学建模竞赛(MCM/ICM) A题解题思路

  6. JMeter的__threadGroupName使用注意事项

    JMeter从4.1版本开始引入了一个新函数"${__threadGroupName}",这个函数的作用是返回当前线程组的名字.${__threadGroupName}的用途也较为 ...

  7. Charles工具内存不足时解决办法

    Charles runs out of memory After recording for a while Charles will run low on available memory. To ...

  8. Windows下Redis集群搭建

    1.第一步先安装Redis 参照<Windows下Redis安装及使用.docx> 在Redis目录E:/Redis下新建Logs文件夹,并且创建3个端口下的配置文件,记得修改里面的接口 ...

  9. oracle数据库之子查询

    子查询也叫内部查询,在主查询之前执行一次并得到结果,此结果一般情况下,是用来当做是主查询的条件.   -- 在 emp 表中,找出工资比 ALLEN 的高? -- 先查出 ALLEN 的工资是多少? ...

  10. 前端开发利器 livereload -- 从此告别浏览器F5键

    各位从事前端开发的童鞋们,大家每天coding && coding,然后F5 && F5,今天推荐一个静态文件在浏览器中自动更新的扩展 livereload,不同手动刷 ...