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

九宫格作为常见的手势密码,我们在使用的时候,是从起点开始,按住不放,然后滑动手指,直到最后一个点松开手指,如果与设置的手势密码匹配,则解锁成功。

现在大多数九宫格作为一个元素存在,很难定位到每一个点。

解决思路有两个,一是用指针定位每一个点;二是先获取元素坐标位置,再获取元素大小,然后切割图片,分别计算出每个点的坐标;

本次笔记记录第一个解决思路:

目的:创建一个Unlock类,按顺序传入九宫格的解锁数字即可实现主屏幕解锁

模拟器:夜神

1、坐标定位到每个点

A、夜神模拟器开发者选项中开启指针位置

B、找出九宫格每一个坐标的位置

# 位置坐标position = [
    [200, 800], [360, 800], [520, 800],
    [200, 960], [360, 960], [520, 960],
    [200, 1126], [360, 1126], [520, 1126]
]

2、创建类,实现解锁

class Unlock():
    def __init__(self, passwd, passwd1=[]):
        # 传入参数passwd,passwd1默认为空列表
        self.passwd = passwd
        self.passwd1 = passwd1

    def passwd(self):
        # 将传入的数字与position中的值对应,装入列表passwd1中
        for i in self.passwd:
            self.passwd1.append(position[i - 1])
        return self.passwd1

    def press(self):
        # 按住第一个按钮
        action.press(x=self.passwd1[0][0], y=self.passwd1[0][1])

    def move(self):
        # 滑动操作,循环方式控制次数
        for j in range(1, len(self.passwd1)):
            action.move_to(x=self.passwd1[j][0], y=self.passwd1[j][1])

    def release(self):
        # 释放
        action.release()

    def perform(self):
        # 提交
        action.perform()

    def unlock(self):
        self.passwd()
        self.press()
        self.move()
        self.release()
        self.perform()

注意:实例化类以列表方式传值

完整代码如下:

# coding=utf-8
‘‘‘
Author:lc
date:2019/4/24  20:53
‘‘‘
from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
from time import sleep
desired_capabilities = {
    ‘platformName‘: ‘Android‘,
    ‘deviceName‘: ‘127.0.0.1:62001‘,
    ‘platformVersion‘: ‘5.1.1‘,
    ‘unicodeKeyboard‘: ‘true‘,
    ‘resetKeyboard‘: ‘true‘,
    ‘appPackage‘: ‘com.tencent.news‘,
    ‘appActivity‘: ‘com.tencent.news.activity.SplashActivity‘
}

driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_capabilities)
sleep(10)
# 滑动进入解锁页
driver.swipe(300, 900, 300, 300)

action = TouchAction(driver)
position = [
    [200, 800], [360, 800], [520, 800],
    [200, 960], [360, 960], [520, 960],
    [200, 1126], [360, 1126], [520, 1126]
]

‘‘‘九宫格解锁‘‘‘
# 定义解锁类
class Unlock():
    def __init__(self, passwd, passwd1=[]):
        # 传入参数passwd,passwd1默认为空列表
        self.passwd = passwd
        self.passwd1 = passwd1

    def passwd(self):
        # 将传入的数字与position中的值对应,装入列表passwd1中
        for i in self.passwd:
            self.passwd1.append(position[i - 1])
        return self.passwd1

    def press(self):
        # 按住第一个按钮
        action.press(x=self.passwd1[0][0], y=self.passwd1[0][1])

    def move(self):
        # 滑动操作,循环方式控制次数
        for j in range(1, len(self.passwd1)):
            action.move_to(x=self.passwd1[j][0], y=self.passwd1[j][1])

    def release(self):
        # 释放
        action.release()

    def perform(self):
        # 提交
        action.perform()

    def unlock(self):
        self.passwd()
        self.press()
        self.move()
        self.release()
        self.perform()

原文地址:https://www.cnblogs.com/mingfan/p/10765228.html

时间: 2024-08-01 23:57:43

App自动化(2)--Python&Appium实现安卓手机九宫格解锁的相关文章

Android app自动化测试之Python+Appium环境搭建

1.安装JDK (1)JDK安装时会有两次,一次是jdk,第二次是jre. (2)环境变量配置: 添加JAVA_HOME变量, 值:Jdk的安装路径 添加CLASSPATH变量,值: .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar 修改path变量,加上这句 %JAVA_HOME%\bin; (3)命令行输入java命令检测是否安装成功 2.安装ADT (1)网址:http://tools.android-studio.org/index.p

使用appium做安卓手机web自动化测试 真机demo

一:appium相关环境搭建过程略. 二:连接真机: 1.手机(andriod 4.2.2)连接电脑,打开USB调试模式. 2.运行cmd 输入 adb devices -l 查看UDID,如图: 3.再在cmd中输入 appium -a 127.0.0.1 -p4723 -U4d007e9a1b0050d1 (-a表示ip,-p表示端口,-U表示设备的udid 可以通过appium -h查看更多命令) 4.如果如下图所示 就表示 appium服务启动成功了,注意这个窗口不要关闭 因为这是app

python+appium+yaml安卓UI自动化测试分享

一.实现数据与代码分离,维护成本较低,先看看自动化结构,大体如下: testyaml管理用例,实现数据与代码分离,一个模块一个文件夹 public 存放公共文件,如读取配置文件.启动appium服务.读取Yaml文件.定义日志格式等 page 存放最小测试用例集,一个模块一个文件夹 results 存放测试报告及失败截图 testcase 存放测试用例 runtest.py 运行所有测试用例 运行的结果: 三.yaml格式介绍 element_info:定位元素信息 find_type:属性,i

转载一篇文章 python程序在安卓手机上使用

from kivy.app import App from kivy.uix.button import Button class TestApp(App): def build(self): return Button(text="Hello,kivy") TestApp().run() 输出结果: [INFO ] [Logger ] Record log in C:\Users\usth1\.kivy\logs\kivy_17-06-09_17.txt [INFO ] [Kivy

AndroidUI自动化(python+appium)-Appium 启动

一.客户端启用appium. 二.CMD中命令行启动appium. 三.启动的代码.(appium的服务一和二选择一个就好了) from appium import webdriverfrom time import sleepdef get_driver(): capablities = { "platformName": "Android", "deviceName": "127.0.0.1:62001", "a

AndroidUI自动化(python+appium)-id定位进行登录操作

一.使用SDK自带的功能进行元素定位. 原文地址:https://www.cnblogs.com/gaotiansai/p/10312080.html

AndroidUI自动化(python+appium)-页面滑动及初级使用

一.滑动功能的封装. def get_size(): size=driver.get_window_size() x=size['width'] y=size['height'] return x,ydef swipe_left(): #从右向左滑动 x1=get_size()[0]*0.85 y1=get_size()[1]*0.5 x2=get_size()[0]*0.15 sleep(3) driver.swipe(x1,y1,x2,y1)def swipe_right(): #从左向右滑

手机自动化培训:Appium介绍

poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478. Appium介绍 Appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的.可用于IOS和Android以及firefox的操作系统.原生的应用是指用android或ios的sdk编写的应用,移动网页应用是指网页应用,类似于ios中safari应用或者Chrome应用或者类浏览器的应用

如何Python写一个安卓APP

前言:用Python写安卓APP肯定不是最好的选择,但是肯定是一个很偷懒的选择,而且实在不想学习Java,再者,就编程而言已经会的就Python与Golang(注:Python,Golang水平都一般),那么久Google了一下Python写安卓的APP的可能性,还真行. 既然要写个APP,那么总得要有个想法吧. 其实笔者想做两个APP来着,一个是自己写着好玩的,一个是关于运维的. 关于运维的APP,设计应该如下 可能长这样 然后设计应该是这样. 如果觉得可行的话,评论留言一下你觉得应该写进这个