在robotframework当中,要实现App自动化,则需要使用AppiumLibrary这个库。
目前版本中,有90+关键字。随着版本的更新,关键字的个数和名字也会有所变动。
http://serhatbolsu.github.io/robotframework-appiumlibrary/AppiumLibrary.html
1、AppiumLibrary的安装:
前提:已安装好python环境并配置好环境变量。然后在命令行当中,运行以下命令:
pip install robotframework-appiumlibrary
AppiumLibrary是一个python第三方库(存放在python安装目录下的Lib/site-packages/AppiumLibrary)。它的结构如下,其中keywords目录下存放的是关键字。
2、引入AppiumLibrary时的初始化参数:
timeout=5, run_on_failure=Capture Page Screenshot
导入AppiumLibrary时可以使用可选参数。
timeout,是用于等待所有等待操作的默认超时。以后可以使用set Appium Timeout设置它。
run_on_failure,指定当AppiumLibrary关键字失败时要执行的关键字名称(来自任何可用库)。
默认情况下,Capture Page Screenshot 将用于拍摄当前页面的截图。当值设置为“No Operation”时,将完全禁用截图功能。
3、关键字参数:
AppiumLibrary中需要在页面上查找元素的所有关键字都采用一个参数,即locator或webelement。
locator是一个字符串,描述如何使用指定不同位置策略的语法来定位元素。webelement是一个保存webelement实例的变量,它是元素的表示形式。
(1)定位器参数:
使用locator定位:
默认情况下,当提供定位器locator时,它与特定元素类型的键属性匹配。对于iOS和Android,关键属性是所有元素的id,并且只使用id就可以轻松地定位元素。
使用webelement定位:
从AppiumLibrary 1.4版本开始,可以传递包含WebElement而不是locator字符串的参数。
要获取WebElement,请使用新的get WebElements或get WebElement关键字。
示例:
@{elements} | Get Webelements | class=UIAButton |
Click Element | @{elements}[2] |
(2)其他参数
log level参数:
定义使用的日志级别。有效的日志级别是WARN、INFO(默认)、DEBUG、TRACE和NONE(无日志记录)。
4、以下列举常用的关键字:
一、连接设备并启动App使用的关键字:
二、系统及屏幕操作关键字
关键字 | 参数 | 说明 | ||||||||||||||||||||||||||||||
Hide Keyboard | key_name=None | 隐藏设备上的软件键盘。可选参数。 在iOS中,使用key_name按特定键,例如Done。在Android中,不使用任何参数。 | ||||||||||||||||||||||||||||||
Landscape | 将设备方向设置为横向。 | |||||||||||||||||||||||||||||||
Portrait | 将设备方向设置为纵向。 | |||||||||||||||||||||||||||||||
Set Appium Timeout | seconds | 设置各个关键字使用的超时时间(秒)。 有很多个 Wait... 的关键字以 timeout 作为参数。所有这些超时参数都是可选的。所有这类关键字使用的超时都可以使用此关键字进行全局设置。 上一个超时值由该关键字返回,可用于以后设置旧值。默认超时为5秒,但可以在导入库时更改。 | ||||||||||||||||||||||||||||||
Set Location | latitude, longitude, altitude=10 | 设置设备的经纬度位置。仅限安卓。 - latitude 纬度 - longitude 经度 - altitude 海拔高度 | ||||||||||||||||||||||||||||||
Set Network Connection Status | connectionStatus | 设置网络连接状态。仅限安卓。 可选数据:
eg:Set Network Connection Status 2 | ||||||||||||||||||||||||||||||
Lock | seconds=5 | 锁定设备一定时间。仅限iOS。 | ||||||||||||||||||||||||||||||
Long Press | locator, duration=1000 | 长按元素一定时间,持续时间可选,单位是毫秒,默认1000 | ||||||||||||||||||||||||||||||
Press Keycode | keycode, metastate=None | 向设备发送按键代码。仅限安卓。 ??? | ||||||||||||||||||||||||||||||
Long Press Keycode | keycode, metastate=None | 向设备发送长按键盘代码。仅限安卓。 | ||||||||||||||||||||||||||||||
Scroll | start_locator, end_locator | 从一个元素滚动到另一个元素。关键定位是元素id和name。 | ||||||||||||||||||||||||||||||
Scroll Down | locator | 向下滚动到元素 | ||||||||||||||||||||||||||||||
Scroll Up | locator | 向上滚动到元素 | ||||||||||||||||||||||||||||||
Shake |
| 摇动设备 | ||||||||||||||||||||||||||||||
Swipe | start_x, start_y, offset_x, offset_y, duration=1000 | 从一个坐标点到另一个坐标点滑动,持续时间可选,单位是毫秒,默认1000 模拟各种屏幕手势操作。 | ||||||||||||||||||||||||||||||
Swipe By Direction | direction | 按指定方向滑动:left, right, down, up。 | ||||||||||||||||||||||||||||||
Swipe By Percent | start_x, start_y, end_x, end_y, duration=1000 | 从屏幕的一个百分比滑动到另一个百分比,持续时间可选。 对于不同的屏幕分辨率,正常的滑动无法缩放,这可以使用百分比来避免。 | ||||||||||||||||||||||||||||||
Tap | locator, x_offset=None, y_offset=None, count=1 | 多击一个元素。 参数: | ||||||||||||||||||||||||||||||
Zoom | locator, percent=200%, steps=1 | 放大某个元素一定量。 | ||||||||||||||||||||||||||||||
Touch Id | match=True | Simulate Touch ID on iOS Simulator | ||||||||||||||||||||||||||||||
Toggle Touch Id Enrollment | Toggle Touch ID enrolled state on iOS Simulator. | |||||||||||||||||||||||||||||||
Capture Page Screenshot | filename=None | 截取当前页面的屏幕快照并将其嵌入日志中。 | ||||||||||||||||||||||||||||||
Go Back | 在浏览器历史记录中后退一步。 | |||||||||||||||||||||||||||||||
Go To Url | url | 在默认web浏览器中打开指定URL。 | ||||||||||||||||||||||||||||||
Execute Script | script | 在页面中插入一段JavaScript代码,以便在当前选定框架的上下文中执行(仅限Web上下文)。 假定执行的脚本是同步的,对脚本求值的结果将返回给客户端。 | ||||||||||||||||||||||||||||||
Execute Async Script | script | 将异步JavaScript片段插入页面,以便在当前选定帧的上下文中执行(仅限Web上下文)。 假定执行的脚本是异步的,并且必须通过调用提供的回调来发出信号,回调始终作为函数的最终参数提供。此回调的值将返回给客户端。 |
三、应用操作关键字
关键字 | 参数 | 说明 |
Background App | seconds=5 | 将应用程序置于设备后台运行一定时间。 |
Install App | app_path, app_package | 安装应用程序 |
Open Application | remote_url, alias=None, **kwargs | 通过Appium服务器,启动一个新应用程序。 |
Close Application | ||
Close All Applications | ||
Launch Application | 启动应用程序。应用程序可以在Appium会话运行时启动。 此关键字可用于在测试用例期间或测试用例之间启动应用程序。 | |
Quit Application | 退出应用程序。当Appium会话保持活动状态时,可以退出应用程序。 此关键字可用于在测试用例期间或测试用例之间关闭应用程序。 | |
Remove Application | application_id | 通过应用程序id标识,卸载应用程序。 Remove Application com.netease.qa.orangedemo |
Reset Application | 重置应用程序。当Appium会话保持活动状态时,可以重置打开的应用程序。 | |
Switch Application | index_or_alias | 按索引或别名切换活动应用程序。 index_or_alias是应用程序索引(整数)或别名(字符串)。索引是Open Application操作的返回值。 此关键字返回上一个活动应用程序的索引,可用于以后切换回该应用程序。 |
四、页面元素操作关键字
关键字 | 参数 | 说明 |
Get Activity | 检索设备上的当前活动页。 仅限于安卓系统。 | |
Start Activity | appPackage, appActivity, **opts | 在测试期间打开任意活动页。 如果活动页属于另一个应用程序,则启动该应用程序并打开该活动页。 |
Wait Activity | activity, timeout, interval=1 | 等待页面出现:等待中,直到目标页面出现或超时失败。 仅适用安卓。 activity - 目标页面 |
Clear Text | locator | Clears the text field identified by locator. |
Click A Point | x=0, y=0, duration=100 | Click on a point |
Click Button | index_or_name | 点击按钮 Click Button 注销 这里“注销”的class属性,必须是Button |
Click Element | locator | 点击元素 Locator可以是resource-id,也可以是xpath;但必须是当前页面唯一存在的;一般用该关键字可以完成所有元素点击 |
Click Element At Coordinates | coordinate_X, coordinate_Y | 单击某个坐标处的元素。 |
Click Text | text, exact_match=False | 点击文字。 例如,Click Text 我的,“我的”需要是当前页面唯一存在的。 |
Input Password | locator, text | 在由定位器标识的元素中,键入给定的密码文本。 |
Input Text | locator, text | 在指定元素中输入特定文本。 |
Input Value | locator, text | 在由定位器标识的元素中,键入给定的文本值。 This is an IOS only keyword, input value makes use of set_value. |
Log Source | loglevel=INFO | 记录并返回当前页或框架的整个html源代码。 |
Pull File | path, decode=False | 检索路径处的文件并返回其内容。 仅限于安卓系统。 |
Pull Folder | path, decode=False | 检索路径处的文件夹。返回压缩的文件夹内容。 仅限于安卓系统。 |
Push File | path, data, encode=False | 将指定数据放入指定路径的文件中。 仅限于安卓系统。 |
Pinch | locator, percent=200%, steps=1 | Pinch in on an element a certain amount. |
关键字中包含get的,“获取xxx”:
关键字 | 参数 | 说明 |
Get Window Width | path, data, encode=False | |
Get Window Height | ||
Get Appium SessionId | Returns the current session ID as a reference | |
Get Appium Timeout | Gets the timeout in seconds that is used by various keywords. | |
Get Capability | capability_name | Return the desired capability value by desired capability name |
Get Contexts | 获取可用上下文。 | |
Get Current Context | Get current context. | |
Get Element Attribute | locator, attribute | 使用给定属性 获取元素属性:name、value... |
Get Element Location | locator | |
Get Element Size | locator | |
Get Matching Xpath Count | xpath | |
Get Network Connection Status | 返回指定网络连接类型的整数位掩码。 仅限于安卓系统。 | |
Get Source | 返回当前页的整个源码。 | |
Get Text | locator | 获取某个元素的文本内容。 获取内容后存储到指定变量中,从而在后续脚本中调用该内容。 |
Get Webelement | locator | 返回第一个匹配定位条件的WebElement对象。 |
Get Webelements | locator | 返回与定位条件匹配的WebElement对象的列表。 |
五、等待关键字
(关键字中包含wait的, timeout参数默认为seleniumlibrary初始化值,默认为5秒):
关键字 | 参数 | 说明 |
Wait Activity | activity, timeout, interval=1 | 等待页面出现:等待中,直到目标页面出现或超时失败。 仅适用安卓。 activity - 目标页面 |
Wait Until Element Is Visible | locator, timeout=None, error=None | 等待直到用定位器指定的元素可见。如果在元素可见之前超时,则失败。 error - 可用于覆盖默认错误消息。 |
Wait Until Page Contains | text, timeout=None, error=None | 等待直到界面中包含某些文字,才进行下一步 Wait Until Page Contains 预约挂号 |
Wait Until Page Contains Element | locator, timeout=None, error=None | 等待直到界面中包含某些元素,才进行下一步 Wait Until Page Contains Element [locator] locator可以是resource-id,也可以是xpath |
Wait Until Page Does Not Contain | text, timeout=None, error=None | 等待直到界面中不包含某些文字,才进行下一步 Wait Until Page Does Not Contain 预约挂号 |
Wait Until Page Does Not Contain Element | locator, timeout=None, error=None | 等待直到界面中不包含某些元素,才进行下一步 Wait Until Page Does Not Contain Element [locator] |
六、断言关键字(关键字中包含should的均是):
关键字 | 参数 | 说明 |
Element Attribute Should Match | locator, attr_name, match_pattern, regexp=False | Verify that an attribute of an element matches the expected criteria. |
Element Name Should Be | locator, expected | 检查元素的name属性 locator可以是resource-id,也可以是xpath |
Element Should Be Disabled | locator, loglevel=INFO | |
Element Should Be Enabled | locator, loglevel=INFO | 检查元素是否可用/可见 |
Element Should Be Visible | locator, loglevel=INFO | |
Element Should Contain Text | locator, expected, message= | |
Element Should Not Contain Text | locator, expected, message= | |
Element Text Should Be | locator, expected, message= | |
Element Value Should Be | locator, expected | |
Page Should Contain Element | locator, loglevel=INFO | 检查页面包含某些元素 |
Page Should Not Contain Element | locator, loglevel=INFO | 检查页面不包含某些元素 |
Page Should Contain Text | text, loglevel=INFO | 检查页面包含某些文字信息 |
Page Should Not Contain Text | text, loglevel=INFO | 检查页面不包含某些文字信息 |
Text Should Be Visible | text, exact_match=False, loglevel=INFO | |
Xpath Should Match X Times | xpath, count, error=None, loglevel=INFO |
七、其他关键字
1.条件判断关键字
Run Keyword If
用法:
Run Keyword If
…ELSE IF
…ELSE
实例:
1)用Run Keyword If执行单条语句时
Run Keyword If | ${patient}=="新患者" | Click Element | cn.kidyn.qdmeical160:id/rb_new_patients |
... | ELSE | Click Element | cn.kidyn.qdmeical160:id/rb_old_patients |
2)用Run Keyword If执行多条语句时,在需要执行多条语句的if或else if或else后,增加关键字:Run Keywords
Run Keyword If | ${newcount}<=${totalmoney} | Run Keywords | 充值-数据库 | ${userPhone} |
... | AND | Click Element | cn.kidyn.qdmeical160:id/btn_top_ | |
... | ELSE | log | 当前账户余额为:${count} |
2.For循环关键字
关键字:For
实例:
1)For循环单独使用时
2)For循环嵌套Run Keyword If语句,退出循环
3.检查某关键字的返回状态
关键字:Run Keyword And Return Status
返回值:布尔值,True False
实例 :通常和Run Keyword If关键字搭配使用
${isMessage} | Run Keyword And Return Status | Wait Until Page Contains Element | [locator] |
Run Keyword If | ${isMessage} | do something |
含义 :判断当前界面中是否存在取消按钮;如果存在,则do something
健康160:cn.kidyn.qdmeical160