RF SeleniumLibrary 关键字分类解读
在robotframework当中,要实现web自动化,则需要使用SeleniumLibrary这个库。
目前版本中,有170+关键字。随着版本的更新,关键字的个数和名字也会有所变动。
https://robotframework.org/SeleniumLibrary/SeleniumLibrary.html
以下列举常用的关键字:
一、SeleniumLibrary的安装:
前提:已安装好python环境并配置好环境变量。然后在命令行当中,运行以下命令:
pip install robotframework-seleniumlibrary
二、SeleniumLibrary结构、和Selenium的关系
SeleniumLibrary是一个python第三方库(存放在python安装目录下的Lib/site-packages/SeleniumLibrary)。它的结构如下,其中keywords目录下存放的是关键字。
在源码中,keywords目录是分类存放关键字,包括alert弹框、table表格/select/iframe等元素操作、waiting等待、window窗口等。
SeleniumLibrary的源代码中,很多地方都直接使用了selenium的API来封装网页的操作,可以说是在selenium之上,封装了更多的元素操作关键字,提供给robot框架的使用者。毕竟有现成的“轮子”,就没有必要再重新造了。
比如上图中elment.py当中的鼠标操作。在selenium当中,ActionChains类是用来专门实现鼠标操作的。
以元素双击操作为例,如果使用python+selenium库来实现双击操作,需要以下代码:
在SeleniumLibrary当中,关键字double click element 就将元素和鼠标双击操作封装在一起。只要传入元素定位即可(如下图所示)。
三、SeleniumLibrary关键字分类解读
1、 引入SeleniunLibrary库时,初始化参数
SeleniumLibrary在robotframework当中,引入时会将SeleniumLibrary这个类初始化。
初始化的参数是对所有关键字生效的。在rf当中引入SeleniumLibrary时,可以修改默认参数值。比如修改默认timeout为15s。
Timeout:等待超时时间。关键字当中有timeout参数的,都使用此处的默认值,5秒。
Implicit wait: 隐性等待时长。0.0表示没有隐性等待。
run on failure: 关键字运行失败时的动作。Capture Page Screenshot是截取页面图片的关键字。表示运行失败时,自动截取当前网页图片, 即失败时自动截图功能。
Screenshot root directory: 截取的网页图片存放路径 。None表示不指定路径 ,默认与输出文件同目录。
2、元素定位语法:
在web自动化当中,有8大定位方式。无论用什么样的语言/框架,定位方式都是通用的。
在robot框架当中,定位语法有以下2种表达方式:
(1) 定位策略:定位表达式(比如 id:kw)
(2) 定位策略=定位表达式(比如 id=kw)
在robot当中,除了8大定位方式以外,还额外扩展了几种,整体的定位方式如下(摘抄自官方文档):
定位策略 | 匹配方式 | 定位示例 |
---|---|---|
id | 元素的id属性 |
id:example
|
name | 元素的name属性 |
name:example
|
identifier | 元素的id或者name属性 |
identifier:example
|
class | 元素的class属性 |
class:example
|
tag | 元素的标签名称 |
tag:div
|
xpath | xpath定位表达式 |
xpath://div[@id="example"]
|
css | css selector定位表达式 |
css:div#example
|
dom | DOM表达式 |
dom:document.images[5]
|
link | 精确匹配链接元素的文本内容 |
link:The example
|
partial link | 部分匹配链接元素的文本内容 |
partial link:he ex
|
jquery | jQuery表达式 |
jquery:div.example
|
示例:
Click Element | id:foo | # 点击id为foo的元素。 |
---|---|---|
Click Element | css:div#foo h1 | # 点击 id为foo的div元素后代当中的h1元素 |
Click Element | xpath=//div[@id="foo"]//h1 | # 同上一个。 |
Click Element | //*[contains(text(), "example")] | # 点击 文本内容包含example的元素 |
注意:xpath定位表达式可省略前缀:xpath。
3、浏览器browser和窗口window操作关键字
二者区别:
(1)浏览器browser:当调用Open Browser或Create WebDriver关键字时,它将使用Selenium WebDriver API创建一个新的seleniumwebdriver实例。用SeleniumLibrary术语来说,创建了一个新的浏览器browser。通过多次调用Open Browser或创建Webdriver,可以同时启动多个独立浏览器(seleniumwebdriver实例)。这些浏览器通常彼此独立,不共享cookie、会话或配置文件等数据。通常当浏览器启动时,它会创建一个显示给用户的窗口。
(2)窗口window:window是browser的一部分,用于加载网站并将其呈现给用户。网站的所有内容都是窗口的内容。在SeleniumLibrary中,browser是WebDriver实例的同义词。一个浏览器可能有多个窗口。窗口可以显示为选项卡、单独的窗口或具有不同位置和大小的弹出窗口属于同一浏览器的窗口通常共享会话详细信息,如cookies。如果需要分离会话详细信息,例如使用两个不同用户登录,则必须创建两个浏览器(Selenium WebDriver实例)。新窗口可以通过被测应用程序示例打开,也可以通过示例执行Javascript关键字打开:
关键字名称 | 参数及默认值 | 关键字说明 | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Open Browser | url=None, browser=firefox, alias=None, remote_url=False, desired_capabilities=None, ff_profile_dir=None, options=None, service_log_path=None |
打开浏览器并访问系统地址。 url:需要打开的url地址。 browser:指定需要打开的浏览器类型,包括IE,Firefox,chrome,opera, safari等常用的浏览器,默认使用Firefox。
alias:是为此浏览器实例提供的别名,可用于在浏览器之间切换,默认为None。 remote_url:是否启用通过remote server的形式来访问,默认为False。 desired_capabilities:可以指定的配置参数,默认为None。 ff_profile_dir:该参数主要针对火狐浏览器,可以通过该参数指定firefox profile路径,默认为None。 options:允许定义浏览器特定的选项。options参数接受两种不同格式,字符串和Python对象。 service_log_path: |
||||||||||||||||||||||||
Close Browser | 关闭当前浏览器。 | |||||||||||||||||||||||||
Close All Browsers | 关闭所有打开的浏览器并重置浏览器缓存。 | |||||||||||||||||||||||||
Get Browser Aliases | 返回别名为NormalizedDict的所有活动浏览器的别名。字典包含别名作为键和索引作为值。这可以作为字典${aliases.key}或list@{aliases}[0]访问。 | |||||||||||||||||||||||||
Get Browser Ids | 以列表形式返回所有活动浏览器的索引。 | |||||||||||||||||||||||||
Switch Browser | index_or_alias |
使用索引或别名在活动浏览器之间切换。 索引由Open Browser关键字返回,并且可以显式地为其提供别名。索引从1开始。 |
||||||||||||||||||||||||
Set Browser Implicit Wait | value |
设置Selenium使用的隐式等待值,单位秒。 与Set Selenium Implicit Wait相同,但仅影响当前浏览器。 |
||||||||||||||||||||||||
Set Selenium Implicit Wait | value |
设置Selenium使用的隐式等待值。 此关键字设置对所有打开的浏览器的隐式等待。使用Set Browser Implicit Wait将其仅设置为当前浏览器。 |
||||||||||||||||||||||||
Maximize Browser window | 当前窗口最大化。 | |||||||||||||||||||||||||
Execute Javascript | window.open() |
打开新窗口。 打开一个新窗口: Execute Javascript window.open() 打开一个新窗口,并转到百度首页: Execute Javascript window.open("https://www.baidu.com") |
||||||||||||||||||||||||
Close Window | 关闭当前打开和选定的浏览器窗口/选项卡。 | |||||||||||||||||||||||||
Get window handles | browser=CURRENT | 获取浏览器中,所有窗口的句柄。 | ||||||||||||||||||||||||
Get Window Identifiers | browser=CURRENT | 返回并记录选定浏览器所有窗口的id属性。 | ||||||||||||||||||||||||
Get window names | browser=CURRENT | 获取当前浏览器所有窗口的名称。 | ||||||||||||||||||||||||
Get window titles | browser=CURRENT | 获取当前浏览器所有窗口的页面title。 | ||||||||||||||||||||||||
Get Location | 返回当前浏览器窗口的页面URL。 | |||||||||||||||||||||||||
Get Locations | browser=CURRENT | 返回并记录选定浏览器的所有窗口的页面URL。 | ||||||||||||||||||||||||
Get window size | inner=False | 获取当前窗口的大小 | ||||||||||||||||||||||||
Set window size | width, height, inner=False | 设置窗口大小。 | ||||||||||||||||||||||||
Get Window Position |
返回当前窗口位置。 ${x} ${y}= Get Window Position |
|||||||||||||||||||||||||
Set Window Position | x, y |
使用x和y坐标设置窗口位置。 该位置相对于屏幕的左上角,但某些浏览器将操作系统设置的可能任务栏排除在计算之外。因此,不同浏览器的实际位置可能不同。 |
||||||||||||||||||||||||
Switch window | locator=MAIN, timeout=None, browser=CURRENT |
切换到定位器匹配的窗口。可根据窗口的句柄handle、名称name、标题title、URL等切换。 这里的locator不是Selenium的locator,而是rf自己是实现的WindowManager,支持通过title,name,url的方式查询窗口。 返回前一个窗口的句柄,并可用于切换回该句柄。 |
示例:
(1)打开浏览器——Open Browser,带有chrome options参数
方式一:
Open Browser url=https://www.baidu.com browser=chrome options=debugger_address("127.0.0.1:9222")
Open Browser url=https://www.baidu.com browser=chrome options=add_experimental_option("debuggerAddress","127.0.0.1:9222")
方式二:
4、元素通用操作关键字(包含鼠标/键盘操作):
关键字名称 | 关键字说明 |
---|---|
click ement | 点击元素。 |
input text | 在元素中输入文本值。 |
get element attribute | 获取元素的某一个属性值。 |
get element size | 获取元素的大小。 |
get value | 获取元素的value属性值。 |
get text | 获取元素的文本内容 |
clear element text | 清除元素的文本值。 |
get webelement | 获取一个元素对象。WebElment对象。 |
get webelements | 获取匹配的所有元素对象。WebElment对象。 |
set focus to element | 元素获取焦点。 |
double click element | 双击元素 |
scroll element into view | 滚动元素到可见区域 |
drag and drop | 将一个元素拖拽到另一个元素区域中。 |
mouse over | 鼠标悬浮在元素上 |
press keys | 键盘按键操作。 |
5、select/frame/alert/表格等操作关键字:
关键字名称 | 关键字说明 |
---|---|
get list items | select/option元素中,获取所有的options选项。 |
select from list by index | select/option元素中,根据下标来选择option选项 |
select from list by value | select/option元素中,根据value属性来选择option选项 |
select from list by label | select/option元素中,根据文本内容来选择option选项 |
select frame | 切换到指定的iframe当中。 |
unselect frame | 退出iframe,切换到默认的html页面中。 |
handle alert | 关闭alert弹出框。 |
input text into alert | 输入文本到alert弹框中,并关闭alert弹出框。 |
choose file | 在上传文件的输入框中(input元素的type为file)输入文本地址。 |
get table cell | 获取表格的单元格值。行号和列号起始值为1.包含表头和表尾所对应的行。 |
6、元素等待关键字
(关键字中包含wait的, timeout参数默认为seleniumlibrary初始化值,默认为5秒):
关键字名称 | 关键字说明 |
---|---|
wait for condition | 等待条件成立:条件为js表达式,表达式的结果要为布尔值。 |
wait until element is visible | 等待指定的元素可见 |
wait until element is not visible | 等待指定的元素不可见 |
wait until element is enabled | 等待指定的元素可用 |
wait until element contains | 等待指定的元素 包含 指定的文本内容 |
wait until element does not contain | 等待指定的元素 不包含 指定的文本内容 |
wait until page contains element | 等待页面 包含指定的元素 |
wait until page contains element | 等待页面 不包含指定的元素 |
wait until page contains | 等待页面 包含指定的文本内容 |
wait until page does not contain | 等待页面 不包含指定的文本内容 |
7、断言关键字(关键字中包含should的均是):
关键字名称 | 关键字说明 |
---|---|
page should contain element | 页面应当 包含指定的元素 |
page should not contain element | 页面应当 不包含指定的元素 |
locator should match x times | 元素定位表达式应该匹配 指定 次数 |
element should be visible | 指定的元素 应当可见 |
element should not be visible | 指定的元素 应当不可见 |
element should be enabled | 指定的元素 应当可用 |
element should be disabled | 指定的元素 应当不可用 |
element text should be | 指定元素的文本内容 应当是 指定内容 |
element text should not be | 指定元素的文本内容 应当不是 指定内容 |
element should be focused | 指定的元素 应当为焦点状态 |
还有很多其它断言的关键字,不一一列举。
8、截屏类关键字:
关键字名称 | 关键字说明 |
---|---|
capture page screenshot | 截取当前页面图片。 |
capture element screenshot | 截取指定元素的图片。 |
set screenshot directory | 设置截图存储目录。 |
四、robotframework - web自动化使用示例
RF SeleniumLibrary 关键字分类解读相关推荐
- 自动化测试框架RobotFrameWork教程03 RF基础关键字
RF基础关键字 今天这个教程讲一下RF的基础关键字让我们对RF的脚本书写有初步的了解 robot framework的基础关键字封装Builtin库中,它里面包含了最基础的一些关键字. 例如:打印.定 ...
- C语言c89(c90)的所有的32个关键字分类
数据类型关键字(12个) char :声明字符型变量或函数 short :声明短整型变量或函数 int : 声明整型变量或函数 long :声明长整型变量或函数 signed :声明有符号类型变量或函 ...
- 关键字分类及背后意图分析
为什么要进行关键字划分 账户结构:因为只有梳理出清楚的账户结构之后,才方便我们去操作物料以及数据投放. 资源配置:具体是指流量资源,对关键字分类之后不同的流量进入不同的页面,获取我们所需要的流量,不同 ...
- sql盲注特点_SQL注入介绍及分类解读
SQL全称是Structured Query Language,是一种结构化的查询语言,用于与数据库进行交互并能够被数据库解析.SQL注入攻击是一种常见的注入攻击类型.攻击方式在用户与程序进行交互时发 ...
- C# 中 volatile 关键字的解读
volatile 关键字表示字段可能被多个并发执行线程修改.声明为 volatile 的字段不受编译器优化(假定由单个线程访问)的限制.这样可以确保该字段在任何时间呈现的都是最新的值. volatil ...
- java关键字的用法_JAVA总结(一)-----关键字分类及使用
一.文章要点: 1.访问控制修饰符 修饰符英文名修饰符意译中文名private私有的public公有的protected受保护的 2.类,方法.变量修饰符 修饰符英文名修饰符意译中文名final强制禁 ...
- 数据库语言关键字分类(详细):
DDL(Date Denifiton Language,数据定义语言关键字:): create.drop.alter.rename.rename table + (旧表名)to (新表 ...
- java synthetic_Java 中冷门的 synthetic 关键字原理解读
看JAVA的反射时,看到有个synthetic ,还有一个方法isSynthetic() 很好奇,就了解了一下: 1.定义 Any constructs introduced by a Java co ...
- MySQL进阶 | SQL优化 | 按关键字分类及原理 | 无知的我费曼笔记(图文排版无水印)
无知的我正在复习MySQL进阶知识.... 笔记特点是 我重新整理了涉及资料的一些语言描述.排版,而使用了自己比较容易理解的描述.同样是回答了一些常见关键问题 如果有遇到有任何无法进展问题或者疑惑的地 ...
最新文章
- trogan连接不上_解决连接不上网(Connection not connected).doc
- 围棋人机大战明日上演,这份观赛指南请留好
- 微型计算机中数据总线既可以传输数据信息,计算机考试题库精简版
- neo4j 机器学习_neo4j(图数据库)是什么?
- Find non-overlap jobs with max cost
- vim编辑模式_sublime vim模式和快捷键
- (DFS)zoj1008-Gnome Tetravex
- 详解ifconfig命令
- 昨晚学妹参加了B站秋招笔试,还想考考我?
- 高并发来袭,如何搭建微服务架构?
- 9.6 awk(上);9.7 awk(下)
- 2011考研数学二第(19)题——拉格朗日中值定理证不等式、单调有界证数列收敛、两问关联
- python 和vba在财务上_各位大佬好,财务分析,要使用BI,VBA,Python,Wind学习那个可以对财务工作更加有益?...
- Securable 测不准
- 云网融合个人学习--云网融合典型场景分析【摘抄】
- steam搬砖项目,运用汇率差赚钱,利润可达30%
- 怎么把竖线去掉_怎么去掉word竖线
- 程序员如何学习Hadoop大数据培训
- 566页19万字区级一网通办政务服务应用平台建设项目方案书
- 给定一个递增序列,a1 a2 ...an 。定义这个序列的最大间隔为d=max{ai+1 - ai }(1≤in),现在要从a2 ,a3 ..an-1 中删除一个元素。问剩余序列的最大间隔最小...
热门文章
- 关于linux下的嵌入式文件系统以及flash文件系统选择(转)
- Java 儒略历和公历的换算
- mac改成类似微软键盘偏好设置
- java服装连锁店后台管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
- QQ会员抽奖系统引流源码_适合引流,营销,推广
- 抖音搬运被限流评级怎么办,什么是有效申诉和无效申诉丨国仁网络资讯
- 百度地图调用手机陀螺仪完成指向功能
- 烈焰遮天 cocos 手游mmo 源码 解析
- html载入3d模型,webGL3D模型的加载与使用
- 宽带电视显示服务器错误是什么意思,智能电视提示“WiFi登录失败”什么原因?当贝市场告诉你...