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 ***

原文地址:https://www.cnblogs.com/yrxns/p/8478123.html

时间: 2024-10-11 22:01:19

RobotFramework:App九宫格滑动解锁的相关文章

APP九宫格滑动解锁的处理

写手机自动化测试脚本关于APP九宫格滑动解锁方面采用了appium API 之 TouchAction 操作. 先是用uiautomatorviewer.bat查询APP元素坐标: 手工计算九宫格每个点中心的坐标及偏移的相对位移: 实现代码如下:(相对位移无负数不会报错,有负数时会报错) TouchAction(self.driver).press(x=300,y=750).wait(1000) \ .move_to(x=576,y=0).wait(100) \ .move_to(x=-576,

Appium九宫格滑动解锁

1.适配各种机型,首先获取整个解锁元素的坐标 2.代码实现 WebElement lockPattern = driver.findElement(By.id("com.android.settings:id/lockPattern")); int x = lockPattern.getLocation().getX(); int y = lockPattern.getLocation().getY(); int w = lockPattern.getSize().getWidth()

Swift: 打造滑动解锁文字动画

最近木事,找出来玩了玩facebook的paper.到处都是那个"slide to unlock your phone"的效果啊.忽闪忽闪的小有点炫酷的感觉.于是准备研究一下.木有想到的是居然可以用CAGradientLayer和一个小小的动画就可以实现这个效果."滑动解锁"的效果: 当然啦,首先你需要显示出这个"滑动解锁"的文本.这里咱们就用一个简单的UILabel来解决这个问题. var textExampleLabel: UILabel!

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

一.引言 在上篇博客Android进阶之自定义View实战(一)仿iOS UISwitch控件实现中我们主要介绍了自定义View的最基本的实现方法.作为自定义View的入门篇,仅仅介绍了Canvas的基本使用方法,而对用户交互层面仅仅处理了单击事件接口,在实际的业务中,常常涉及到手势操作,本篇博客以九宫格手势解锁View为例,来说明自定义View如何根据需求处理用户的手势操作.虽然九宫格手势解锁自定义View网上资料有很多,实现原理大同小异,但这里我只是根据自己觉得最优的思路来实现它,目的是让更

iOS滑动解锁/滑动获取验证码效果实现

最近短信服务商要求公司的app在获取短信验证码时加上校验码,目前比较流行的是采用类似滑动解锁的方式,我们公司采取的就是这种方式,设计图如下所示: 这里校验内部的处理逻辑不作介绍,主要分享一下界面效果的实现, 下面贴出代码: 先子类化UISlider #import <UIKit/UIKit.h> #define SliderWidth 240 #define SliderHeight 40 #define SliderLabelTextColor [UIColor colorWithRed:1

手机滑动解锁代码

#region==滑动解锁部分== private bool mousedown;//定义鼠标点击的bool值 private int curx;//定义鼠标点击时的位置X坐标 private void button11_MouseDown(object sender, MouseEventArgs e) { mousedown = true; curx = Cursor.Position.X;//获取点击时的X坐标 } private void button11_MouseUp(object

hihoCoder #1054 滑动解锁

#1054 : 滑动解锁 Time Limit:2000ms Case Time Limit:1000ms Memory Limit:256MB Description 滑动解锁是智能手机一项常用的功能.你需要在3x3的点阵上,从任意一个点开始,反复移动到一个尚未经过的"相邻"的点.这些划过的点所组成的有向折线,如果与预设的折线在图案.方向上都一致,那么手机将解锁.两个点相邻当且仅当以这两个点为端点的线段上不存在尚未经过的点.此外,这条折线还需要至少经过4个点. 为了描述方便,我们给这

hiho_1054_滑动解锁

题目大意 智能手机九点屏幕滑动解锁,如果给出某些连接线段,求出经过所有给出线段的合法的滑动解锁手势的总数.题目链接: 滑动解锁 题目分析 首先,尝试求解没有给定线段情况下,所有合法的路径的总数.可以使用dfs进行搜索.代码如下: void dfs(int row, int col, int cur_len) { visited[row][col] = true; if (cur_len >= 4) { //到达该点时,走过的路径长度大于等于4,则为合法的一个解锁手势 total_count++;

Selenium模拟JQuery滑动解锁

滑动解锁一直做UI自动化的难点之一,我补一篇滑动解锁的例子,希望能给初做Web UI自动化测试的同学一些思路. 首先先看个例子. https://www.helloweba.com/demo/2017/unlock/ 当我手动点击滑块时,改变的只是样式: 1.slide-to-unlock-handle 表示滑块,滑块的左边距在变大(因为它在向右移动嘛!) 2.Slide-tounlock-progress 表示滑过之后的背景黄色,黄色的宽度在增加,因为滑动经过的地方都变黄了. 除些之外,没其它