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

Capture Page Screenshot    ff.png

Close Browser

这里我们用到了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 ‘=‘


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

示例:

我们脚本中的

Input Text    id=kw    LeetTest

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

使用调试工具查看元素,其html代码如下:

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

根据文档中给出的几种定位方法,可以改为

1.Identifier

Input Text    identifier=kw    LeetTest

2.Name

Input Text    name=wd    LeetTest

3.Xpath

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

这里需要注意一下,现在使用的是绝对xpath地址进行的定位,但在实际使用中,baidu的首页会由于浏览器或环境的不同发生样式变化,对应的xpath绝对地址会发生变化,这个时候就需要使用xpath相对地址

直接定位:

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

或利用其父元素form进行相对定位:

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

4.Css

InputText    css=.s_ipt   LeetTest

InputText    css=#kw   LeetTest

InputText    css=[name=wd]   LeetTest

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

5.Jquery及sizzle的元素定位方法,可以参考

xesam的博客

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

在官方文档中给出的剩余的几个方法,不常用,这里不做过多描述。

下一篇文章,将对如何使用resource组织测试数据进行介绍

时间: 2024-11-05 06:03:33

Robot Framework 使用2 - 如果进行页面元素定位的相关文章

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

java selenium webdriver实战 页面元素定位

自动化测试实施过程中,测试程序中常用的页面操作有三个步骤 1.定位网页上的页面元素,并存储到一个变量中 2.对变量中存储的页面元素进行操作,单击,下拉或者输入文字等 3.设定页面元素的操作值,比如,选择下拉列表中的那个下拉列表或者输入框中输入什么值 其中定位页面元素是三步骤的第一步,本篇介绍常用的定位方法 webDriver对象的findElement函数用于定位一个页面元素,findElements函数用户定位多个页面元素,定位的页面元素使用webElement对象进行存储 常用的方法有: 1

【前端经纬】将页面元素定位

最近在做公司的项目的手,遇到了要是 html页面元素定位的问题. 查阅了相关资料,这里 Mark.  1)可以使用 css的position属性实现该功能. 2)代码实现如下(可以运行 http://www.w3school.com.cn/tiy/t.asp?f=csse_position_absolute): <html> <head> <style type="text/css"> h2.pos_abs { position:absolute;

【selenium学习笔记】webdriver进行页面元素定位

[selenium学习笔记]webdriver进行页面元素定位 进行Web页面自动化测试,对页面上的元素进行定位和操作是核心.而操作又是以定位为前提的,因此,对页面元素的定位是进行自动化测试的基础. 页面上的元素就像人一样,有各种属性,比如元素名字,元素id,元素属性(class属性,name属性)等等.webdriver就是利用元素的这些属性来进行定位的. 可以用于定位的常用的元素属性: id name class name tag name link text partial link te

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

Python3.x:Selenium中的webdriver进行页面元素定位 页面上的元素就像人一样,有各种属性,比如元素名字,元素id,元素属性(class属性,name属性)等等.webdriver就是利用元素的这些属性来进行定位的. 可以用于定位的常用的元素属性: id name class name tag name link text partial link text xpath css selector 对应于webdriver中的定位一个元素方法分别是: driver.find_e

UI自动化页面元素定位

做ui自动化的最基础的就是页面元素定位了,如果连页面元素都定位不到,自动化从何谈起呢?接下来我们就看看页面元素定位的方法吧!(这里就用百度页面来进行演示) 一.最通用的几种定位方式: 1.通过id定位 1 driver.find_element_by_id('su') 2.通过name定位 driver.find_element_by_name('mp') 3.通过class属性 driver.find_element_by_class_name('s_ipt') 4.通过文本链接 driver

Selenium with Python 003 - 页面元素定位

WebUI自动化,首先需要定位页面中待操作的元素,然后进行各种事件操作,这里我们首先介绍Selenium Python 如何定位页面元素,WebDriver 提供了一系列的方法. 定位单个页面元素(返回单个元素对象) find_element_by_id find_element_by_name find_element_by_xpath find_element_by_link_text find_element_by_partial_link_text find_element_by_tag

selenium 页面元素定位之iframe里面的元素定位(包括有无id、name的)

今天在写一个功能的脚本时,发现部分部分元素总是定位不了,看了下页面的html 发现元素原来在iframe里,这个使用iframe的id和name属性用switch_to_frame跳转后就可以定位了,但是发现部分iframe没有id 和 name,突然不知怎搞了,百度了下,发现下面这个文章不错! -------------------------以下转自:http://blog.sina.com.cn/s/blog_68f262210101mcxp.html 最近正在进行webdriver的we

基于页面元素定位的操作失败自动截图

web自动化脚本运行失败,很大一部分问题出在元素定位上,博主在这里介绍一个循环定位及失败截图的方法.以方便脚本维护,定位问题. 1.以下代码是WebDriver自带的方法,封装一下,使用即可. 1 /** 2 * 截取屏幕截图并保存到指定路径 3 * 4 * @param filepath 5 * 保存屏幕截图完整文件名称及路径 6 * @return 无 7 */ 8 public void captureScreenshot(String filepath) { 9 File screenS