RobotFramework_3.SeleniumLibrary操作(一)

RobotFramework_3.SeleniumLibrary操作(一)

SeleniumLibrary的使用


页面的元素的定位

我们在操作页面的元素,比如一个按键、输入框之前首先要做的是对页面元素进行定位。
在自动化测试中,页面元素的定位是否准确对用例的执行成功与否起到了关键的作用。
SeleniumLibrary支持几乎所有主流的网页元素定位,比如id、name、xpath表达式、css选择器等

SeleniumLibrary支持两种定位策略,隐式的和显式的

隐式定位

不用指明定位的方式,操作的关键字会调用默认的定位方式,如下图:

使用Click Element点击元素时,使用隐式的定位不指明定位方式,会默认example为元素的id或name属性
不推荐使用这种定位策略

显式定位

显式定位方式要使用:定位方式:对应元素值的方式 如下图:

第一行,点击元素name属性值为foo的元素

SeleniumLibrary支持的元素定位方式如下图:

推荐使用其中的id,name,link,xpath这四种定位方式

使用sizzle或者别名为jquery的定位方式需要Robotframework安装jQuery library

以百度首页的百度搜索输入框为例:

定位这个输入框可以用以下几种方式:
id:kw
name:wd
xpath://[@id="kw"]或//[@id="kw"]

注意定位某个元素时,请确保使用这种定位方式只能定位到唯一一个元素,否则,会定位到相同值的元素在代码顺序中的第一个 SeleniumLibrary3.0之后xpath://[@id="kw"]可简写为//[@id="kw"]
Link这种定位只能用于超链接元素<a>,例如首页上的“新闻”链接:<a href="http://news.baidu.com" name="tj_trnews" class="mnav">新闻</a>

输入文本Input Text

将指定文本输入定位的输入框
两个参数:[ locator | text ]
前者是定位符,后者是要输入的文本

只能对<input>输入框元素Input Text,否则程序会报错
为了确保输入框在输入前被清空,可以先使用Clear Element Text来清除定位输入框的内容

点击元素

推荐使用:Click Element关键字
Click Button,Click Image,Click Link也可以用于点击按键,图片和链接
但是以上都是元素,所以都可以用Click Element来替代
两个参数:[ locator | modifier=False ]locator定位符为必选参数,modifier为可选参数

modifier为点击时同时按下的按键操作,多个按键使用+号连接

如果要点击某个元素的某个坐标可以使用Click Element At Coordinates
三个参数:定位符,x坐标,y坐标。x、y坐标为距离元素中心点开始计算的值

注释

写代码时添加注释是一个好习惯,有助于执行的人理解代码的执行逻辑,也方便过后修改代码
可以在代码行之后的空列用#来注释,也可以用#注释一行

等待,超时和延迟

在测试用例执行时,就算执行逻辑、定位方式都OK还是有很大概率会执行失败。
这是因为在执行用例时,必须考虑页面显示和页面操作的同步问题,或者说我们必须确保在操作页面元素前,相应的元素已经显示,否则会出现元素找不到的问题。
这个问题在网络延迟高,加载内容较多的页面,或者服务器排队严重时尤其严重。
所以我们必须设置合理的超时时间,等待页面加载或者在演示用例、debug时降低代码运行速度。

显式等待wait ...

显示等待是我们最常用的等待方式,可以根据需要,设置主动的等待时间。
Selenium有很多具体的等待方式,如下图:

我们最常用的显式等待方式是:Wait Until Element Is Visible
作用:等待直到定位的元素可见
参数:[ locator | timeout=None | error=None ]三个参数,一个locator定位符必选,timeout超时时间和error错误为可选
当时间超出超时时间,元素仍不可见会执行失败

error用于覆盖默认的error message
timeout超时时间设置详见下方,Selenium的默认超时时间为timeout=5.0
针对某些JS弹出的窗口,或者AJAX的弹出式菜单,使用Wait Until Page Contains Element来替代Wait Until Element Is Visible

Timeout

在使用Wait...关键字或者与Alert警告框相关关键字时,会使用Timeout超时时间设置。
可以使用Set Selenium Timeout关键字来设置超时时间

参数只有一个:设置的超时时间值,但该关键字有返回值,可以声明一个变量来存
时间格式:只写数字默认单位为秒,例如:0.5 or 42,或者使用Robotframework的时间格式,加上时间单位:1.5 seconds or 1 min 30 s

隐式等待implict wait

隐式等待主要用于打开浏览器时。
可以通过Set Selenium Implicit Wait关键字来设置最大的隐式等待时间
时间单位和上面Timeout格式一样

如果只设置修改当前浏览器窗口的隐式等待时间使用Set Browser Implicit Wait关键字

selenium speed

可以使用Set Selenium speed来延迟Selenium的全局执行速度。
一个参数:每个Selenium命令执行后等待时间值
|Set Selenium Speed|0.5 seconds|

该关键字用于演示用例,或者调试代码时,不要用于保证元素出现或者页面加载!
SeleniumLibrary默认值:timeout=5.0, implicit_wait=0.0,selenium speed=0.0

获取网页元素信息

获取网页元素文本Get Text

作用:获取定位元素的文本
一个必选参数:locator定位符
在使用时一般要用一个变量来存获取到的文本,例如获取百度主页右上角的链接文本:

获取网页元素属性Get Element Attribute

作用:获取定位元素的对应属性值
两个必选参数:locator和属性名
继续用上图作为例子,获取新闻链接的href跳转url属性值:

获取网页元素标题Get Title

作用:获取当前网页标题
没有参数,一般需要变量存放获取的值

获取网页url地址Get Location

作用:获取当前网页url地址
没有参数,一般需要变量存放获取的值

Get locations:获取所有浏览器窗口的url地址

比较预期与实际结果

在自动化测试用例中,对预期和实际结果比较非常重要,单纯的执行操作不失败只能说明功能没有大问题。
通常我们还需要对页面的元素属性、文本值或者网页标题、url进行对比,判断是否是我们想要的结果。
比较常用的判断关键字是:
Should Be Equal
作用:比较预期值和实际值是否一致。
当两个值不一致,语句执行会出错,脚本中断执行。
继续用上面百度主页做例子,获取网页标题和url来判断,打开页面是否是百度主页:

 

 

posted @ 2019-06-27 17:47  Jeknight  阅读(2607)  评论(1编辑  收藏  举报