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

我们的脚本如下:

  1. *** Settings ***
  2. Library Selenium2Library
  3.  
  4. *** Test Cases ***
  5. firefox兼容性
  6. Open Browser https://www.baidu.com/ ff
  7. Input Text id=kw LeetTest
  8. Click button id=su
  9. Sleep 2
  10. Capture Page Screenshot ff.png
  11. 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 章节,介绍了进行元素定位的几种方法:

以脚本

  1. 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 '='

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

具体到我们的测试脚本

  1. InputText id=kw LeetTest

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

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

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

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

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

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

  1. Input Text identifier=kw LeetTest

或是name作为关键字

  1. Input Text identifier=wd LeetTest

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

  1. Input Text name=wd LeetTest

3.Xpath

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

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

  1. 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等元素属性定位到目标位置

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

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

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

4.Css

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

  1. InputText css=.s_ipt LeetTest
  2.  
  3. InputText css=#kw LeetTest
  4.  
  5. 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. MacOS下netstat和lsof使用的若干问题

    [-= 博客目录 =-] 1-相关说明 1.1-博客介绍 1.2-netstat和lsof 2-学习过程 2.1-netstat 2.2-lsof 2.3-netstat和lsof区别和关联 3-资料 ...

  2. 苏州优步uber司机奖励政策(持续更新)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  3. 6-[多线程]-互斥锁、GIL、死锁、递归锁、信号量

    1.互斥锁(排他锁) (1)不加锁的情况下 并发控制问题:多个事务并发执行,可能产生操作冲突,出现下面的3种情况 丢失修改错误 不能重复读错误 读脏数据错误 # mutex from threadin ...

  4. Gitlab+Jenkins学习之路(四)之gitlab备份和恢复

    gitlab的备份和恢复 (1)创建备份目录,并授权 [root@linux-node1 ~]# mkdir /data/backups/gitlab -p [root@linux-node1 ~]# ...

  5. MongoDB操作-备份和恢复,导入和导出

    mongodb数据备份和恢复主要分为二种:一种是针对库的mongodump和mongorestore,一种是针对库中表的mongoexport和mongoimport 1. 常用命令格式 mongod ...

  6. luogu1117 [NOI2016]优秀的拆分

    luogu1117 [NOI2016]优秀的拆分 https://www.luogu.org/problemnew/show/P1117 后缀数组我忘了. 此题哈希可解决95分(= =) 设\(l_i ...

  7. 在Javascript中 声明时用"var"与不用"var"的区别,== 和 ===的区别

    今天,被问到两个JS问题,当时没回答到重点,问题虽然看起来简单,但是细节却马虎不得,在此做下记录: 1. 在Javascript中 声明时用"var"与不用"var&qu ...

  8. 单元测试——测试神器,testng

    为什么用它 建议使用 TestNG 作为 Java 项目的主要单元测试框架,因为 TestNG 在参数化测试.依赖测试以及套件测试(组)方面功能更加强大.TestNG 意味着高级的测试和复杂的集成测试 ...

  9. 提高你的Python编码效率的“武林秘籍”

    我用Python编程有几年了, 并且我仍然经常惊讶于Python代码可以如何的简洁,如何的 DRY . 我学到了很多小贴士和技巧,大多数来自于阅读开源项目的源代码,像Django, Flask, Re ...

  10. 解决Eclipse Install New Software太慢的问题

    Eclipse -> Help -> Install New Software... 在出现的窗口点击Manage管理Available Software Sites 将所有URL中的&q ...