RobotFramework AppiumLibrary 用户关键字

http://blog.csdn.net/jasonliujintao/article/details/53419258

RobotFramework AppiumLibrary 用户关键字

  • 最近在用robotframework搞安卓app 的自动化,其中用到了 AppiumLlibrary 的关键字,我都映射成了用户关键字,需要的自取。
  • 把页面内容copy 到你本地的txt 文件中,然后导入到你自己的RobotFramewrk 工程中,就可以使用了,注意你需要先导入AppiumLlibrary 关键字哟~
*** Settings ***
Library           AppiumLibrary
Library           AutoItLibrary
Library           os

*** Keywords ***
xpath应该匹配次数
    [Arguments]    ${xpath}    ${count}
    Xpath Should Match X Times    ${xpath}    ${count}

上传文件
    [Arguments]    ${path}    ${data}    ${encode}=base64
    Push File    ${path}    ${data}    ${encode}

元素不应该包含文本
    [Arguments]    ${locator}    ${expected}    ${msg}=
    Element Should not Contain Text    ${locator}    ${expected}    ${msg}

元素值应该是
    [Arguments]    ${locator}    ${expected}
    Element Value Should Be    ${locator}    ${expected}

元素名应该是
    [Arguments]    ${path}    ${name}
    Element Name Should Be    ${path}    ${name}

元素属性应该匹配
    [Arguments]    ${locator}    ${attr_name}    ${match_pattern}    ${regx}=False
    Element Attribute Should Match    ${locator}    ${attr_name}    ${match_pattern}    ${regx}

元素应该包含文本
    [Arguments]    ${locator}    ${expected}    ${msg}=None
    Element Should Contain Text    ${locator}    ${expected}    ${msg}

元素应该失效
    [Arguments]    ${locator}    ${level}=INFO
    Element should be disabled    ${locator}    ${level}

元素应该有效
    [Arguments]    ${locator}    ${level}=INFO
    Element should be enabled    ${locator}    ${level}

元素文本应该是
    [Arguments]    ${locator}    ${expected}    ${msg}=None
    Element Text Should Be    ${locator}    ${expected}    ${msg}

关闭当前应用
    Close Application

关闭所有应用
    Close All Applications

切换应用
    [Arguments]    ${index_or_alias}
    Switch Application    ${index_or_alias}

切换页面内容
    [Arguments]    ${webview}
    Switch To Context    ${webview}

卸载应用
    [Arguments]    ${application_id}
    Remove Application    ${application_id}

后台运行
    [Arguments]    ${sec}
    Background App    ${sec}

向上滚动
    [Arguments]    ${locator}
    Scroll Up    ${locator}

向下滚动
    [Arguments]    ${locator}
    Scroll Down    ${locator}

失败后运行关键字
    [Arguments]    ${keyword}
    [Documentation]    Example:    # Disables run-on-failure functionality and stores the previous kw name in a variable.    # Restore to the previous keyword.
    ...
    ...    Register Keyword To Run On Failure \ \ \ Log Source
    ...    \ \ \ \ \ \ \ # Run `Log Source` on failure.
    ...
    ...    ${previous kw}=
    ...    Register Keyword To Run On Failure \ \ Nothing
    ...
    ...
    ...    Register Keyword To Run On Failure \ \ \ \ ${previous kw} \ \ \ \
    Register Keyword To Run On Failure    ${keyword}

打印资源
    [Arguments]    ${level}
    Log Source    ${level}

打开URL
    [Arguments]    ${url}
    [Documentation]    Example:
    ...
    ...    打开应用
    ...    http://localhost:4755/wd/hub \ platformName=iOS \ platformVersion=7.0
    ...    deviceName='iPhone Simulator'
    ...    browserName=Safari
    ...
    ...    打开URL \ http://m.webapp.com
    Go To URL    ${url}

打开应用
    [Arguments]    ${url}    ${platformName}    ${version}    ${deviceName}    ${app}
    [Documentation]    打开应用 ${url} ${platformName} ${version} \ \ ${devicename} ${app} @{args}
    ...
    ...    例如:
    ...
    ...    打开应用 http://localhost:4723/wd/hub Android 5.1.1 5e25d20d ${CURDIR}${/}app${/}fft.apk
    ...
    ...    ${url} 是用于访问应用的地址,一般是固定的。 url 和 端口可以根据具体地址修改。
    ...    ${version} \ 是安卓的版本
    ...    ${devicename} 是手机的UDID, 可以打开cmd 然后用 adb devices -l \ 看到设备列表。
    ...    UDID 是看到的第一列的内容,真机是一串字符串,模拟器是 \ ip:port \ 的形式
    ...    ${app} 是apk 存放的路径 ${CURDIR} 系统变量,取得当前脚本路径。 ${/} 系统变量 '/'
    open application    ${url}    platformName=${platformName}    platformVersion=${version}    deviceName=${deviceName}    app=${app}

按关键字
    [Arguments]    ${keycode}    ${metastate}=None
    Press Keycode    ${keycode}    ${metastate}

摇动手机
    Shake

放大元素
    [Arguments]    ${locator}    ${percent}=200%    ${step}=1
    Zoom    ${locator}    ${percent}    ${step}

敲击元素
    [Arguments]    ${locator}
    Tap    ${locator}

横屏
    [Documentation]    手机设置横屏
    LANDSCAPE

清除文本
    [Arguments]    ${locator}
    Clear Text    ${locator}

滑动
    [Arguments]    ${start_x}    ${start_y}    ${end_x}    ${end_y}
    swipe    ${start_x}    ${start_y}    ${end_x}    ${end_y}

滚动
    [Arguments]    ${start_locator}    ${end_locator}
    [Documentation]    从一个元素滚动到另一个元素
    Scroll    ${start_locator}    ${end_locator}

点击元素
    [Arguments]    ${locator}
    Click Element    ${locator}

点击元素坐标
    [Arguments]    ${coordinate_x}    ${coordinate_y}
    Click Element At Coordinates    ${coordinate_x}    ${coordinate_y}

点击固定点
    [Arguments]    ${x}    ${y}    @{args}
    Click A Point    ${x}    ${y}    @{args}

点击按钮
    [Arguments]    ${index_or_name}
    Click Button    ${index_or_name}

点击文本
    [Arguments]    ${text}    ${exact_match}=false
    [Documentation]    点击匹配到文本的元素:
    ...
    ...    点击文本 "text"
    ...    点击文本 "text" True
    ...
    ...    默认模糊匹配所有元素,可以设置成精确匹配。
    ...    如果可以匹配到两个或两个以上的元素,那么需要用 click Element 元素,去处理。
    Click Text    ${text}    ${exact_match}

睡眠
    [Arguments]    ${sec}
    sleep    ${sec}

竖屏
    PORTRAIT

等待页面元素出现
    [Arguments]    ${locator}    ${timeout}=100    ${err}=None
    Wait Until Page Contains Element    ${locator}    ${timeout}    ${err}

等待元素出现文本
    [Arguments]    ${text}    ${timeout}=10    ${err}=None
    Wait Until Page Contains    ${text}    ${timeout}    ${err}

等待页面不包含元素
    [Arguments]    ${locator}    ${timeout}=10    ${err}=None
    Wait Until Page Does Not Contain Element    ${locator}    ${timeout}    ${err}

等待页面不包含文本
    [Arguments]    ${text}    ${timeout}=10    ${err}=None
    Wait Until Page Does Not Contain    ${text}    ${timeout}    ${err}

缩小元素
    [Arguments]    ${locator}    ${percent}=200%    ${step}=1
    Pinch    ${locator}    ${percent}    ${step}

获取Appium超时时间
    ${timeout}    Get Appium Timeout
    [Return]    ${timeout}

获取Web元素
    [Arguments]    ${locator}
    [Documentation]    获取匹配的定位器的第一个元素:
    ...
    ...    ${element} 获取Web元素 id=name
    ...    点击元素 ${element}
    ${element}    Get Webelement    ${locator}
    [Return]    ${element}

获取元素坐标
    [Arguments]    ${locator}
    ${location}    Get Element Location    ${locator}
    [Return]    ${location}

获取元素尺寸
    [Arguments]    ${locator}
    ${size}    Get Element Size    ${locator}
    [Return]    ${size}

获取元素属性
    [Arguments]    ${locator}    ${name_or_value}
    [Documentation]    获取元素属性:(name 或者 value)
    ...    ${val} \ 获取元素属性 ${locator} ${name_or_value}
    ...
    ...    例如:
    ...    ${val} 获取元素属性 id=xxxx name
    ...    ${val} 获取元素属性 id=xxxx value
    ${val}    Get Element Attribute    ${locator}    ${name_or_value}
    [Return]    ${val}

获取匹配xpath数
    [Arguments]    ${xpath}
    [Documentation]    例如:
    ...
    ...    ${count} \ \ \ 获取匹配xpath数 \ \ //android.view.View[@text='Test']
    ${count}    Get Matching Xpath Count    ${xpath}
    [Return]    ${count}

获取可见文本
    ${contents}    Get Contexts
    [Return]    ${contents}

获取当前文本
    ${context}    Get Current Context
    [Return]    ${context}

获取所有web元素
    [Arguments]    ${locator}
    [Documentation]    @{element} 获取所有web元素 id=my_element
    ...    点击元素 @{element}[2]
    @{element}    Get Webelements    ${locator}
    [Return]    @{element}

获取文件
    [Arguments]    ${file_path}    ${decode}=False
    pull file    ${file_path}    ${decode}

获取文件夹
    [Arguments]    ${folder_path}    ${decode}=False
    Pull Folder    ${folder_path}    ${decode}

获取文本
    [Arguments]    ${locator}
    [Documentation]    获取符合元素的文本:
    ...    ${text} \ 获取文本 \ //*[contains(@text,'foo')]
    ${text}    Get Text    ${locator}
    [Return]    ${text}

获取网络连接情况
    ${stat}    Get Network Connection Status
    [Return]    ${stat}

获取资源
    ${source}    Get Source
    [Return]    ${source}

设置Appium超时
    [Arguments]    ${sec}
    Set Appium Timeout    ${sec}

设置网络连接状态
    [Arguments]    ${sec}
    Set Network Connection Status    ${sec}

输入值
    [Arguments]    ${locator}    ${val}
    Input Value    ${locator}    ${val}

输入密码
    [Arguments]    ${path}    ${passwd}
    Input Password    ${path}    ${passwd}

输入文本
    [Arguments]    ${path}    ${text}
    Input Text    ${path}    ${text}

返回
    [Documentation]    浏览器返回上一个的页面
    Go Back

重置应用
    Reset Application

锁屏
    [Arguments]    ${sec}
    [Documentation]    这个方法只使用于IOS
    Lock    ${sec}

长按元素
    [Arguments]    ${locator}
    Long Press    ${locator}

长按关键字
    [Arguments]    ${keycode}    ${metastate}=None
    [Documentation]    keycode 可以在这个网址里面找到:
    ...    http://developer.android.com/reference/android/view/KeyEvent.html.
    ...
    ...    Args:
    ...    \ \ \ \ - keycode - the keycode to be sent to the device
    ...    \ \ - metastate - meta information about the keycode being sent
    Long Press Keycode    ${keycode}    ${metastate}

隐藏键盘
    Hide Keyboard

页面不应该包含元素
    [Arguments]    ${locator}    ${lvl}=INFO
    Page Should Not Contain Element    ${locator}    ${lvl}

页面不应该包含文本
    [Arguments]    ${locator}    ${lvl}=INFO
    Page Should Not Contain Text    ${locator}    ${lvl}

页面应该包含元素
    [Arguments]    ${locator}    ${lvl}=INFO
    Page Should Contain Element    ${locator}    ${lvl}

页面应该包含文本
    [Arguments]    ${locator}    ${lvl}=INFO
    Page Should Contain Text    ${locator}    ${lvl}

页面截图
    [Arguments]    ${filename}=
    Capture Page Screenshot    ${filename}


文末列出最近整理的Robot Framework相关的文章,

1.Robot Framework 介绍 

2.Robot Framework + Appium测试Android设备 

3. Robot Framework如何向Android发送keycode键盘事件 

4.Robot Framework如何判断Android屏幕是否含有某个控件 

5.Robot Framework如何等待Android屏幕中的某个控件出现 

6.Robot Framework如何在Android中实现滚屏

7.Robot Framework如何对Android的控件定位

8.Robot Framework+Appium案例分享一: 验证版本信息

9.Robot Framework+Appium案例分享二: Camera测试

10.Robot Framework+Appium案例分享三: WiFi测试

11.Robot Framework+Appium案例分享四: Bluetooth测试

12.RobotFramework AppiumLibrary 用户关键字


  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值