在robotframework当中,要实现web自动化,则需要使用SeleniumLibrary这个库。

目前版本中,有180+关键字。随着版本的更新,关键字的个数和名字也会有所变动。

在网上没有找到较为全面的关于这个库的关键字介绍,所以此篇文章作为一个汇总,列举常用的关键字。

1、SeleniumLibrary的安装:

前提:已安装好python环境并配置好环境变量。然后在命令行当中,运行以下命令:

pip install --upgrade robotframework-seleniumlibrary

2、SeleniumLibrary结构、和Selenium的关系

SeleniumLibrary是一个python第三方库(存放在python安装目录下的Lib/site-packages/SeleniumLibrary)。它的结构如下,其中keywords目录下存放的是关键字。

在源码中,是分门别类的来存放关键字。包括alert弹框、表格/select/iframe等元素操作、等待、窗口等。

SeleniumLibrary的源代码中,很多地方都直接使用了selenium的API来封装网页的操作,可以说是在selenium之上,封装了更多的元素操作关键字,提供给robot框架的使用者。毕竟有现成的“轮子”,就没有必要再重新造了。

比如上图中elment.py当中的鼠标操作。在selenium当中,ActionChains类是用来专门实现鼠标操作的。

以元素双击操作为例,如果使用python+selenium库来实现双击操作,需要以下代码:

在SeleniumLibrary当中,关键字double click element 就将元素和鼠标双击操作封装在一起。只要传入元素定位即可(如下图所示)。

3、SeleniumLibrary关键字分类解读

1) 引入SeleniunLibrary库时,初始化参数

SeleniumLibrary在robotframework当中,引入时会将SeleniumLibrary这个类初始化。

初始化的参数是对所有关键字生效的。

Timeout:等待超时时间。关键字当中有timeout参数的,都使用此处的默认值,5秒。

Implicit wait: 隐性等待时长。0.0表示没有隐性等待。

run on failure: 关键字运行失败时的动作。Capture Page Screenshot是截取页面图片的关键字。表示运行失败时,自动截取当前网页图片, 即失败时自动截图功能。

Screenshot root directory: 截取的网页图片存放路径 。None表示不指定路径 ,默认与输出文件同目录。

我们在robot当中引入SeleniumLibrary时,可以修改默认参数值。比如修改默认timeout为15s

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)浏览器和窗口操作关键字

关键字名称 关键字说明
open browser 打开浏览器并访问系统地址。url:网站地址,browser:浏览器类型。
close browser 关闭浏览器。
maximize browser window 当前窗口最大化。
get window size 获取当前窗口的大小
set window size 设置窗口大小。
get window handles 获取浏览器中,所有窗口的句柄。
switch window 切换窗口。可根据窗口的句柄、标题、名称等切换。
get window names 获取浏览器,所有窗口的名称。
get window titles 获取所有窗口的标题。
get locations 获取所有窗口的url。

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 设置截图存储目录。

4、robot - web自动化使用示例

robotframework框架 - seleniumLibrary 关键字解读-全攻略的更多相关文章

  1. Python 自动化测试全攻略:五种自动化测试模型实战详解

    随着移动互联网的发展,软件研发模型逐步完善,软件交付质量越来越受到软件公司的重视,软件测试技术特别是自动化测试技术开始在软件系统研发过程中发挥着越来越重要的作用. 与传统的手工测试技术相比,自动化测试 ...

  2. 用C#制作PDF文件全攻略

    用C#制作PDF文件全攻略 目  录 前    言... 3 第一部分 iText的简单应用... 4 第一章 创建一个Document 4 第一步 创建一个Document实例:... 5 第二步 ...

  3. CSS Grid网格布局全攻略

    CSS Grid网格布局全攻略 所有奇技淫巧都只在方寸之间. 几乎从我们踏入前端开发这个领域开始,就不停地接触不同的布局技术.从常见的浮动到表格布局,再到如今大行其道的flex布局,css布局技术一直 ...

  4. Moon.Orm3.8技术全攻略

    Moon.ORM技术全攻略  一.绪论 本文主要是针对Moon.ORM的技术的讨论及其使用使用指导.如有其它疑问,请留言.本文主要针对Moon.ORM3.9版本,同时将会对4.0做一个技术预览.本文从 ...

  5. webBrowser中操作网页元素全攻略

    原文 webBrowser中操作网页元素全攻略 1.获取非input控件的值: webBrowser1.Document.All["控件ID"].InnerText; 或webBr ...

  6. VS2013全攻略(安装,技巧,快捷键,插件)!

    工欲善其事,必先利其器.VS2013全攻略(安装,技巧,快捷键,插件)! 之前一篇<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥>承蒙大家喜爱和编辑推荐,在此 ...

  7. maven教程全攻略

    maven教程全攻略 我们在开发项目的过程中,会使用一些开源框架.第三方的工具等等,这些都是以jar包的方式被项目所引用,并且有些jar包还会依赖其他的jar包,我们同样需要添加到项目中,所有这些相关 ...

  8. VSCode插件开发全攻略(三)package.json详解

    更多文章请戳VSCode插件开发全攻略系列目录导航. package.json 在详细介绍vscode插件开发细节之前,这里我们先详细介绍一下vscode插件的package.json写法,但是建议先 ...

  9. VSCode插件开发全攻略(二)HelloWord

    更多文章请戳VSCode插件开发全攻略系列目录导航. 写着前面 学习一门新的语言或者生态首先肯定是从HelloWord开始. 您可以直接克隆我放在GitHub上vscode-plugin-demo 的 ...

随机推荐

  1. 牛客小白月赛6 水题 求n!在m进制下末尾0的个数 数论

    链接:https://www.nowcoder.com/acm/contest/135/C来源:牛客网 题目描述 其中,f(1)=1;f(2)=1;Z皇后的方案数:即在Z×Z的棋盘上放置Z个皇后,使其 ...

  2. 深入浅出TypeScript(4)- 使用接口和类型别名

    在TypeScript中,为了可以约束对象定义,提供了两个新的特性,接口和类型别名. TypeScript中的接口 在强类型语言中,都有接口的概念,那么TypeScript中的接口是如何使用的呢? 接 ...

  3. 企查猫app数据解密

    通过最近几天的对企查猫的研究,目前已经成功将企查猫的数据加密和响应数据加密完成解密. 和之前对启信宝APP的数据解密操作基本一样,不过企查猫对请求和响应都使用aes加密了,抓包的时候可以看到,具体可以 ...

  4. hadoop之数据倾斜

    数据倾斜介绍 在做Shuffle阶段的优化过程中,遇到了数据倾斜的问题,造成了对一些情况下优化效果不明显.主要是因为在Job完成后的所得到的Counters是整个Job的总和,优化是基于这些Count ...

  5. springboot以jar运行时参数传递

    springboot以jar运行时参数传递 spring boot项目我们都习惯以内嵌tomcat方式.直接打包成jar,运行时使用: java -jar XXX.jar  --spring.prof ...

  6. 【深入浅出-JVM】(76):classloader

    方法 public Class<?> loadClass(String name) throws ClassNotFoundException 通过类名发挥这个类的Class实例 prot ...

  7. Zookeeper系列一:Zookeeper基础命令操作

    有些事不是努力就可以改变的,五十块的人民币设计的再好看,也没有一百块的招人喜欢. 前言 由于公司年底要更换办公地点,所以最近投了一下简历,发现面试官现在很喜欢问dubbo.zookeeper和高并发等 ...

  8. Vscode for python ide配置

    1.文件头添加 自定义代码片段 文件>首选项>用户代码片段 搜索python 添加代码 "HEADER":{ "prefix": "hea ...

  9. Python机器学习笔记:卷积神经网络最终笔记

    这已经是我的第四篇博客学习卷积神经网络了.之前的文章分别是: 1,Keras深度学习之卷积神经网络(CNN),这是开始学习Keras,了解到CNN,其实不懂的还是有点多,当然第一次笔记主要是给自己心中 ...

  10. 小白专场-是否同一颗二叉搜索树-python语言实现

    目录 一.二叉搜索树的相同判断 二.问题引入 三.举例分析 四.方法探讨 4.1 中序遍历 4.2 层序遍历 4.3 先序遍历 4.4 后序遍历 五.总结 六.代码实现 一.二叉搜索树的相同判断 二叉 ...