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

简介:

说明:

   不要误认为Robot framework 只是个web UI测试工具,更正确的理解Robot framework是个测试框架,之所以可以拿来做web UI层的自动化是国为我们加入了selenium2API。比如笔者所处工作中,更多的是拿Robot framework来做数据库的接口测试,当然,需要先将相关的数据库包导入。

那么测试框架的本质是什么?个人觉得有以下几个方面。

1、比较

测试实质就是“比较”,在测试之前需要先写用例,假设经过各种操作之后会得到一个预期的结果,然后,在测试的过程中按照用例的步骤会得到一个实际的结果,拿实际结果与预期结果比较。从而且进一步判断用例的成功与失败。

2、用例的组织

为什么要组职用例,因为用例有很多条,我们或在一个文件中写多条用例,或多个文件中写多条用例,总之要很好的把这些用例组织起,自动化用例是给程序去跑的,所以,更应该规范的组织起来。

3、执行结果展示

用例跑完了,成功了,失败了?用例执行到哪一步失败了?总要把这些信息展示给用户吧。

=============

回到主题,在Robot framework中元素的定位。

  因为Robot framework 引入的selenium2 包,所以,假如我们学过selenium 的话,定位是一样的。因为没找到相关资料,所以,经过验证id name xpath css 四种定位方式是可以的,尤其后两种是“万能的”,所以可以解决99%的定位问题。

 

id name 定位                                     

  假如把一个元素看作一个人的话,id name可以看作一个人的身份证号和姓名。当然,这些属性值是否唯一要看前端工程师如何设计了。

百度搜索框和搜索按钮

复制代码
……
<input id="kw1" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">
……
<input id="su1" class="bg s_btn" type="submit" onmouseout="this.className='bg s_btn'" onmousedown="this.className='bg s_btn s_btn_h'" value="百度一下">
……
复制代码

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

id = kw1

name = wd

在Robot framework 中就是这样写的:

Input Text

id=kw1

robot framework学习

input text

name=wd

robot framework学习

Input text 用于输入框的关键字,“robot framework学习”是要给输入框输入的内容。

 

百度按钮只id数据可以利用:

Id=su1

Click Button

id=su1

 

Click Button是按钮点击的关键字。

 

 

xpath定位                               

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

来看看百度输入框在整个页面上的位置吧:

复制代码
<html>
    <head>
    <body link="#0000cc">
    <div id="wrapper" style="display: block;">
        <div id="debug" style="display:block;position:absolute;top:30px;right:30px;border:1px solid;padding:5px 10px;"></div>
        <div id="u">
        <div id="head">
        <div id="content" style="display: block;">
            <div id="u1" style="display: block;">
            <div id="m">
                <p id="lg">
                <p id="nv">
                <div id="fm">
                    <form id="form1" class="fm" action="/s" name="f1">
                        <span class="bg s_ipt_wr">
                            <input id="kw1" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">
复制代码

 

1、Xpath的绝对路径:

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

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

 

2、Xpath的相对路径:

绝对路径的用法往往是在我们迫不得已的时候才用的。大多时候用相对路径更简便。

 

2.1、元素本身:

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

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

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

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

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

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

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

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

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

 

2.2、找上级:

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

元素的上级属性为:

<form id="form1" class="fm" action="/s" name="f1">
  <span class="bg s_ipt_wr">
    <input id="kw1" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">

找爸爸:

xpath = //span[@class=’bg s_ipt_w’]/input

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

xpath = //form[@id=’form1’]/span/input

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

 

2.3、布尔值写法:

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

Xpath = //input[@id=’kw1’ and @name=’wd’]

可以and ,当然也可以or :

Xpath = //input[@id=’kw1’ or @name=’wd’]

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

 

Robot framework 中的写法:

Input Text

xpath = //*[@id=’kw1’]

robot framework学习

input text

xpath = //span[@class=’bg s_ipt_w’]/input

 

robot framework学习

input text

xpath = //input[@id=’kw1’ and @name=’wd’]

 

robot framework学习

 

 

CSS定位                           

   Css的定位更灵活,因为他它用到的更多的匹配符和规格。

http://www.w3school.com.cn/cssref/css_selectors.asp

选择器

例子

例子描述

.class

.intro

选择 class="intro" 的所有元素。

#id

#firstname

选择 id="firstname" 的所有元素。

*

*

选择所有元素。

element

p

选择所有 <p> 元素。

element,element

div,p

选择所有 <div> 元素和所有 <p> 元素。

element element

div p

选择 <div> 元素内部的所有 <p> 元素。

element>element

div>p

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

element+element

div+p

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

[attribute]

[target]

选择带有 target 属性所有元素。

[attribute=value]

[target=_blank]

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

[attribute~=value]

[title~=flower]

选择 title 属性包含单词 "flower" 的所有元素。

[attribute|=value]

[lang|=en]

选择 lang 属性值以 "en" 开头的所有元素。

 

同样以百度输入框的代码,我们来看看CSS如何定位。

<form id="form1" class="fm" action="/s" name="f1">
  <span class="bg s_ipt_wr">
    <input id="kw1" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">

id定位:

css=#kw1

class定位:

css=.s_ipt

其它属性:

css=[name=wd]

css=[type=text]

css=[autocomplete=off]

父子定位:

css=span > input

css=form > span > input

根据标签名定位:

css=input

 

Robot framework 中的写法:

Input Text

css=#kw1

robot framework学习

input text

css=.s_ipt

robot framework学习

input text

css=[name=wd]

robot framework学习

 

  同样一个元素,根基CSS的不同规则,可能有几十上百种写法。CSS更灵活强大,但是相比xpath 的学习成本为更高。但是cssxpath 两种定位方式是一定要学会一种,不然你的自动化工作更无法开展。

 

 

目录
相关文章
|
14天前
|
Web App开发 前端开发 Java
《手把手教你》系列技巧篇(九)-java+ selenium自动化测试-元素定位大法之By name(详细教程)
【4月更文挑战第1天】 这篇教程介绍了如何使用Selenium Webdriver通过name属性来定位网页元素,作为系列教程的一部分,之前讲解了id定位,后续还会有其他六种定位方法。文中以百度搜索为例,详细说明了定位搜索框(name=&quot;wd&quot;)并输入关键词“北京宏哥”的步骤,包括手动操作流程、编写自动化脚本以及代码实现。此外,还提供了查看和理解Selenium源码的方法,强调了`open implementation`选项用于查看方法的具体实现。整个过程旨在帮助读者学习Selenium的元素定位,并实践自动化测试。
37 0
|
26天前
|
Web App开发 存储 JavaScript
《手把手教你》系列技巧篇(八)-java+ selenium自动化测试-元素定位大法之By id(详细教程)
【2月更文挑战第17天】本文介绍了Web自动化测试的核心——元素定位。文章首先强调了定位元素的重要性,指出找不到元素则无法进行后续操作。Selenium提供八种定位方法,包括By id、name、class name等。其中,By id是最简单快捷的方式。文章还阐述了自动化测试的步骤:定位元素、操作元素、验证结果和记录测试结果。此外,讨论了如何选择定位方法,推荐优先使用简单稳定的方式,如id,其次考虑其他方法。最后,作者提供了Chrome浏览器的开发者工具作为定位元素的工具,并给出了通过id定位的代码示例。
48 0
|
10天前
|
前端开发 Java 测试技术
《手把手教你》系列技巧篇(十二)-java+ selenium自动化测试-元素定位大法之By link text(详细教程)
【4月更文挑战第4天】本文介绍了link text在自动化测试中的应用。Link text是指网页中链接的文字描述,点击可跳转至其他页面。文章列举了8种常用的定位方法,其中着重讲解了link text定位,并通过实例展示了如何使用Java代码实现点击百度首页的“奥运奖牌榜 最新排名”链接,进入相应页面。如果link text不准确,则无法定位到元素,这说明linkText是精准匹配,而非模糊匹配。文章还提到了partial link text作为link text的模糊匹配版本,将在后续内容中介绍。
34 4
|
8天前
|
XML 前端开发 Java
《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)
【4月更文挑战第6天】按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath。xpath 的定位方法, 非常强大。使用这种方法几乎可以定位到页面上的任意元素。xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面,所以我们可以使用Xpath 的用法来定位页面元素。XPath 是XML 和Path的缩写,主要用于xml文档中选择文档中节点。基于XML树状文档结构,XPath语言可以用在整棵树中寻找指定的节点。
41 0
|
5天前
|
前端开发 JavaScript Java
《手把手教你》系列技巧篇(十七)-java+ selenium自动化测试-元素定位大法之By css上卷(详细教程)
【4月更文挑战第9天】本文介绍了CSS定位方式的使用,包括它的优势和8种常用的定位方法。CSS定位相比XPath定位更快、更稳定。文章通过示例详细讲解了如何使用CSS定位元素,包括通过id、name、class name、tag name、link text、partial link text以及XPath进行定位。还提供了Java代码示例来演示如何在自动化测试中使用这些定位方法。
35 1
|
4月前
|
移动开发 安全 测试技术
『App自动化测试之Appium应用篇』| 继承于selenium常用的元素定位方法有哪些?如何使用?
『App自动化测试之Appium应用篇』| 继承于selenium常用的元素定位方法有哪些?如何使用?
81 0
|
3月前
|
JSON 自然语言处理 机器人
接口自动化测试教程:如何使用 Robot Framework
Robot Framework 是一个用于实现自动化测试和机器人流程自动化(RPA)的开放源代码框架。它由一个名为 Robot Framework Foundation 的组织得到推广,得到了多家领军企业在软件开发中的广泛应用。框架以其开放性和灵活性为特点,能够无缝整合各种其他工具,无论团队规模大小,均无需承担额外许可成本。
|
3月前
|
Web App开发 Android开发
App自动化查看webview的元素定位信息
App自动化查看webview的元素定位信息
30 0
|
3月前
|
数据可视化 测试技术 持续交付
自动化测试神器:Python之Pytest库入门使用
自动化测试神器:Python之Pytest库入门使用
94 4
|
3天前
|
Web App开发 测试技术 网络安全

热门文章

最新文章