上一篇文章中,简单模拟了一个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. 【JUC源码解析】ScheduledThreadPoolExecutor

    简介 它是一个线程池执行器(ThreadPoolExecutor),在给定的延迟(delay)后执行.在多线程或者对灵活性有要求的环境下,要优于java.util.Timer. 提交的任务在执行之前支 ...

  2. Field 'email' doesn't have a default value

    MySQL在出现这个Field xxx doesn't have a default value错误的原因是:我们设置了该字段为非空,但是我们没有设置默认值造成的. 或着 缺少字段.

  3. 动态加载与插件系统的初步实现(一):反射与MEF解决方案

    涉及内容: 反射与MEF解决方案 AppDomain卸载与代理 WinForm.WcfRestService示 PRRT1: 反射实现 插件系统的基本目的是实现宿主与组件的隔离,核心是作为接驳约定的接 ...

  4. 【Python Learning第一篇】Linux命令学习及Vim命令的使用

    学了两天,终于把基本命令学完了,掌握以后可以当半个程序员了♪(^∇^*) 此文是一篇备忘录或者查询笔记,如果哪位大佬看上了并且非常嫌弃的话,还请大佬不吝赐教,多多包涵 以下是我上课做的一些笔记,非常的 ...

  5. Altium中Logo的导入方法及大小调整

    Altium中Logo的导入方法及大小调整   LOGO识别性是企业标志的重要功能之一,特点鲜明.容易辨认,很多客户需要在PCB设计阶段导入LOGO标示归属特性.如果LOGO是CAD图纸,可以直接按照 ...

  6. Git工具使用小结

    昨天开始看一套java接口自动化的视频,今天看到的一章是关于git这个工具使用的,上大学那会用过svn作为版本管理工具,包括现在所在的公司,用的也还是svn进行管理.其实老早就听闻过Git,Githu ...

  7. java项目部署之后,Jar包中配置文件修改

    Java项目发布时,配置文件不像.net项目一样与工程路径保持一致,而是直接包含在了jar包中,此时要修改就没那么方便了,我们可以将配置文件从jar包抽离出来,修改完之后再写入Jar包即可, 也没那么 ...

  8. Activity启动过程中获取组件宽高的五种方式

    第一种:(重写Activity的onWindowFocusChanged方法) /** * 重写Acitivty的onWindowFocusChanged方法 */ @Override public ...

  9. [Unity] unity5.3 assetbundle打包及加载

    Unity5.3更新了assetbundle的打包和加载api,下面简单介绍使用方法及示例代码. 在Unity中选中一个prefab查看Inspector窗口,有两个位置可以进行assetbundle ...

  10. 关于kafka的一些问题理解