RobotFramework:App九宫格滑动解锁

Posted 悠然现南山

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RobotFramework:App九宫格滑动解锁相关的知识,希望对你有一定的参考价值。

转自:http://blog.csdn.net/codekxx/article/details/50577381

手势密码在很多手机应用都会运到,手势密码都要求至少连接4个点,但AppiumLibrary并没有提供对应的关键字,本人尝试连续使用Swipe关键字两次解决该问题,为什么要用两次呢?因为Swipe的参数只是起点和终点,如果直接给出手势密码的起点和终点,则会忽略中间的点。

手机QQ手势密码如下:

 

 

AppiumLibrary它是开源的,就直接去修改其源代码。 
于是,去到AppiumLibrary安装的文件夹,默认安装路径为:C:\\Python27\\Lib\\site-packages\\AppiumLibrary\\keywords),再到keywords目录中找到_touch.py文件,就是它了。 
给这个文件的类_TouchKeywords加上一个方法nine_palace_unlock,具体代码如下:

    def nine_palace_unlock(self, locator):
        """nine palace"""
        driver = self._current_application()
        action = TouchAction(driver)          
        lock_pattern = driver.find_element_by_xpath(locator)

        x = lock_pattern.location.get(\'x\')
        y = lock_pattern.location.get(\'y\')
        width = lock_pattern.size.get(\'width\')
        height = lock_pattern.size.get(\'height\')


        offset = width / 6
        p11 = int(x + width / 6), int(y + height / 6)
        p12 = int(x + width / 2), int(y + height / 6)
        p13 = int(x + width - offset), int(y + height / 6)
        p21 = int(x + width / 6), int(y + height / 2)
        p22 = int(x + width / 2), int(y + height / 2)
        p23 = int(x + width - offset), int(y + height / 2)
        p31 = int(x + width / 6), int(y + height - offset)
        p32 = int(x + width / 2), int(y + height - offset)
        p33 = int(x + width - offset), int(y + height - offset)

        print(p11,p12,p13)
        print(p21,p22,p23)
        print(p31,p32,p33)

        p2 = p12[0] - p11[0]
        print(p2)
        sleep(3)

        action.press(x=p11[0],y=p11[1]).move_to(x=p2,y=0).wait(1000).move_to(x=p2,y=0).wait(1000).\\
            move_to(x=-p2,y=p2).wait(1000).move_to(x=-p2,y=p2).wait(1000).release().wait(1000).perform()

 

代码如下:

代码如下:

*** Settings ***
Suite Setup
Suite Teardown
Library           AppiumLibrary

*** Variables ***

*** Test Cases ***

手机QQ
    Open Application    http://localhost:4723/wd/hub    platformName=android    platformVersion=19    deviceName=127.0.0.1:21503    app=${CURDIR}${/}QQ_794.apk    appPackage=com.tencent.mobileqq
    ...    appActivity=com.tencent.mobileqq.activity.SplashActivity    unicodeKeyboard=True    resetKeyboard=True
    Wait Until Page Contains Element    xpath=//android.widget.LinearLayout[@resource-id=\\"com.tencent.mobileqq:id/name\\"]/android.view.View[5]    #等待手机QQ打开完成
    Nine Palace Unlock    //android.widget.LinearLayout[@resource-id=\\"com.tencent.mobileqq:id/name\\"]/android.view.View[5]
    [Teardown]    Close All Applications

*** Keywords ***

 

以上是关于RobotFramework:App九宫格滑动解锁的主要内容,如果未能解决你的问题,请参考以下文章

App自动化--Python&Appium实现安卓手机九宫格解锁

Appium九宫格滑动解锁

appium 解锁九宫格

iOS开发之手势解锁

Android实现九宫格解锁的实例代码

Android进阶之自定义View实战九宫格手势解锁实现