【Robot Framework 项目实战 02】SeleniumLibrary Web UI 自动化
前言
SeleniumLibrary 是针对 Robot Framework 开发的 Selenium 库。它也 Robot Framework 下面最流程的库之一。主要用于编写 Web UI 自动化测试。今天我们一起来学习SeleniumLibrary的用法。
安装
pip install --pre --upgrade robotframework-seleniumlibrary
简单使用示例
创建 robot_se.robot 文件。调用 SeleniumLibrary 中所提供的关键字,编写 Web 自动化测试。
*** Settings ***
Library SeleniumLibrary
*** Test Cases ***
Baidu search case
Open Browser http://www.baidu.com chrome
Input text id=kw robot framework
click button id=su
close Browser
代码解析:
第二行 :Library SeleniumLibrary,我们导入了SeleniumLibrary 模块
第五行 :我们使用SeleniumLibrary 关键字Open Browser,启动了浏览器,并打开了指定网址。
第七行 :我们使用SeleniumLibrary 关键字Input text 向百度输入框(id=kw)中输入内容。
第七行 :我们使用SeleniumLibrary 关键字click button,点击了搜索按钮(id=su)
第八行 :我们使用SeleniumLibrary 关键字close Browser 关闭关闭浏览器。
元素定位
SeleniumLibrary提供了两种指定前缀的显式定位器策略。
第一种: strategy:value 这种语法只支持 SeleniumLibrary 3 版本以上,是新的定位写法。
第二种: strategy=value 这种语法是 Robot Framework 通常所使用的命令参数的语法。
SeleniumLibrary 支持的元素方法:
| = Strategy = | = Match based on = | = Example = |
|---|---|---|
| id | Element id. | id:example |
| name | name attribute. | name:example |
| identifier | Either id or name. | identifier:example |
| class | Element class. | class:example |
| tag | Tag name. | tag:div |
| xpath | XPath expression. | xpath://div[@id="example"] |
| css | CSS selector. | css:div#example |
| dom | DOM expression. | dom:document.images[5] |
| link | Exact text a link has. | link:The example |
| partial | link Partial link text. | partial link:he ex |
| sizzle | Sizzle selector provided by jQuery. | sizzle:div.example |
| jquery | Same as the above. | jquery:div.example |
| default | Keyword specific default behavior. | default:example |
分割符号的空格将被忽略, 所以, id : foo, id: foo 和 id:foo 都是等价的。
例如:
| demo | --- |
|---|---|
| Click Element | id:container |
| Click Element | css:div#container h1 |
| Click Element | xpath: //div[@id="container"]//h1 |
如果定位器的开头为 “//” 或 “ (// ” 测被当做 Xpath 定位。换句话说,用 //div 和 xpath://div是等价的。
| demo | --- |
|---|---|
| Click Element | //div[@id="container"] |
| Click Element | (//div)[2] |
除了可以直接操作元素外,也可以通过 Get WebElement 关键字获取元素对象。
| demo | -- | -- |
|---|---|---|
${elem} = |
Get WebElement | id=example |
| Click Element | ${elem} |
分层测试
和前面的接口测试一样,我们也可以对测试用例进行封装:
*** Settings ***
Documentation Simple example using SeleniumLibrary.
Library SeleniumLibrary
*** Variables ***
${URL} https://www.baidu.com
${BROWSER} Chrome
*** Test Cases ***
case1
Open Browser ${URL} ${BROWSER}
${title} Baidu Search robot framework
should contain ${title} robot framework_百度搜索
close browser
case2
Open Browser ${URL} ${BROWSER}
${title} Baidu Search selenium
should contain ${title} selenium_百度搜索
close browser
*** Keywords ***
Baidu Search
[Arguments] ${search_key}
Input text id:kw ${search_key}
click button id:su
Evaluate time.sleep(2) time
${title} Get Title
[Return] ${title}
代码解析:
第四行 :*** Variables *** 用于定义公共变量。${URL} 和 ${BROWSER} 为定义的公共变量,
总结
- selenium Web自动化
- SeleniumLibrary 元素定位
- 数据驱动
- 全局变量
【Robot Framework 项目实战 02】SeleniumLibrary Web UI 自动化的更多相关文章
- 【Robot Framework 项目实战 02】使用脚本生成统一格式的RF关键字
背景 在微服务化的调用环境下,测试数据及接口依赖的维护是一个问题,因为依赖的接口和数据可能不在同一个服务下,而这相关的多个服务往往是不同人员来测试的. 因此为了节省沟通成本,避免关键字的重复冗余.所以 ...
- 【Robot Framework 项目实战 01】使用 RequestsLibrary 进行接口测试
写在前面 本文我们一起来学习如何使用Robot Framework 的RequestsLibrary库,涉及POST.GET接口测试,RF用例分层封装设计等内容. 接口 接口测试是我们最常见的测试类型 ...
- 【Robot Framework 项目实战 00】环境搭建
前言 我们公司在推广RF这个框架做后端接口测试,力求让同事们能更快的完成服务端需求的自动化,作为主导者之一,决定分享一些经验,方便后来者. 我会从安装部署.Request.selenium.自定义框架 ...
- 【Robot Framework 项目实战 03】使用脚本自动生成统一格式的RF自动化用例
背景 虽然大家都已经使用了统一的关键字,但是在检查了一些测试用例之后,还是发现因为大家对RF的熟悉程度不一导致的测试用例颗粒度差异很大的情况:而且在手动方式转化测试用例过程中,有不少工作是完全重复的且 ...
- 【Robot Framework 项目实战 04】基于录制,生成RF关键字及 自动化用例
背景 因为服务的迁移,Jira版本的更新,很多接口文档的维护变少,导致想要编写部分服务的自动化测试变得尤为麻烦,很多服务,尤其是客户端接口需要通过抓包的方式查询参数来编写自动化用例,但是过程中手工重复 ...
- selenium(12)-web UI自动化项目实战(PO模式,代码封装)
web UI自动化项目实战-项目 项目使用禅道,所以你需要搭建1个禅道,搭建禅道的方法和步骤见 https://www.cnblogs.com/xinhua19/p/13151296.html 搭建U ...
- Robot Framework使用Phantomjs进行无界面UI自动化测试
Robot Framework 是一款关键字驱动的验收自动化测试框架,现在在国内使用的越来越广泛了.一种通用的Web UI自动化测试解决方案是Robot Framework+Selenium2Libr ...
- Robot Framework 项目搭建
首先新建一个项目“RobotDemo".项目Type一般选择“Directory”形式. 项目第一层可以放3种文件:Test Suite.Directory 和 Resource File. ...
- Java高级项目实战02:客户关系管理系统CRM系统模块分析与介绍
本文承接上一篇:Java高级项目实战之CRM系统01:CRM系统概念和分类.企业项目开发流程 先来CRM系统结构图: 每个模块作用介绍如下: 1.营销管理 营销机会管理:针对企业中客户的质询需求所建立 ...
随机推荐
- html5<embed>的完整属性
问题起因:网页中插入Flash,看了代码,然后呢,小小的学习下 <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000& ...
- ZOJ 3949 Edge to the Root
题意: 在一棵树中,可以从根节点往其他节点加一条边,使得根节点到其他所有节点的距离和最小,输出最小的距离和. 思路: 我们考虑在加的一条边为$1 \to v$,那么在树上从$1 \to v$的路径上, ...
- Intro to Python for Data Science Learning 5 - Packages
Packages From:https://campus.datacamp.com/courses/intro-to-python-for-data-science/chapter-3-functio ...
- 持续集成之三:搭建Maven私服Nexus
安装环境 Red Hat Enterprise Linux Server release 7.3 (Maipo) jdk1.7.0_80 apache-tomcat-7.0.90 mysql-5.7. ...
- mysql存储引擎管理使用
mysql采用插件化架构,可以支持不同的存储引擎,比如myisam,innodb.本文简单的介绍mysql存储引擎的管理与使用. 1.查看mysql存储引擎:show engines; 可以看到,my ...
- Python tricks(7) -- new-style class的__slots__属性
__slots__是在python 2.2开始引入的一个新特性, 我们来看一下官方给出的解释. This class variable can be assigned a string, iterab ...
- linux服务器---安装samba
安装samba 1.检测samba是否安装,如果没有,那么可以使用yum来安装.至少需要安装3个软件:samba,samba-client.samba-common [root@localhost p ...
- new Runnable中的 this
package com.test; public class BB extends AA{ public String bb = "bbbbb"; public void gg() ...
- 06: linux下python开发环境梳理
1.1 修改~/.bashrc文件 改编终端颜色 alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' # User specific aliases ...
- 20145335郝昊《网络对抗》Exp 8 Web基础
20145335郝昊<网络对抗>Exp 8 Web基础 实验内容 本实践的具体要求有: Web前端HTML:能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法, ...