TouchAction

Touch Action包含一系列操作,比如按压、长按、点击、移动、暂停。

使用TochAction需要先导入对应的模块

from appium.webdriver.common.touch_action import TouchAction

按压

使用到press()方法,通过手指按压手机屏幕的某个位置, press可以是一个元素,也可以接收屏幕的坐标(x,y)。

press(self, el=None, x=None, y=None)

TouchAction(driver).press(x=200,y=200).release().perform()

长按

使用到longpress()方法,与press相似,比press多了一个duration延迟时间(毫秒)

long_press(self, el=None, x=None, y=None, duration=1000)

TouchAction(driver).long_press(x=200,y=200,duration=1000).release().perform()

点击

使用到tap() 方法,可以对一个元素或控件执行点击操作,用法参考press()。

tap(self, element=None, x=None, y=None, count=1)

移动

使用到move_to() 方法,将指针从上一个点移动到指定的元素或点。

move_to(self, el=None, x=None, y=None)

注意:

移动到目位置有时是算绝对坐标点,有时是基于前面一个坐标点的偏移量,这个要结合具体App来实践。

暂停

方法:Wait()

wait(self, ms=0),暂停脚本的执行,单位为毫秒。

释放

方法release() 结束的行动取消屏幕上的指针。

release(self)

执行

perform() 执行的操作发送到服务器的命令操作。

perform(self)

TouchAction实战——九宫格滑动操作

案例场景:

进入手机自带的app手机管家,有应用已进行过加密,需要九宫格解锁才能进入设置其它应用加密权限。

代码实现:

# -*- coding: utf-8 -*-#

from appium.webdriver.common.touch_action import TouchAction
from appium import webdriver
from selenium.common.exceptions import NoSuchElementException
import time
desired_caps = {
"platformName": "Android",
"platformVersion": "5.1",
"deviceName": "U4KF9HSK99999999",
"appPackage": "com.coloros.safecenter",
"appActivity": "com.coloros.safecenter.MainActivity",
"unicodeKeyboard":True,
"resetKeyboard":True,
"noReset": True
#"ANDROID_UIAUTOMATOR":"Uiautomator2",
# "chromeOptions": {"androidProcess": "com.wondershare.drfone"}
}
driver = webdriver.Remote("http://localhost:4723/wd/hub",desired_caps)
driver.implicitly_wait(5)
driver.find_element_by_id("com.coloros.safecenter:id/image_permission").click()
time.sleep(2)
driver.find_element_by_xpath("//*[@text='XXXX']").click()
time.sleep(2)
#开始滑动解锁,此app就是根据坐标的偏移量计算的
TouchAction(driver).press(x=270,y=791).wait(2000).\
move_to(x=270,y=0).wait(1000).\
move_to(x=270,y=0).wait(1000).\
move_to(x=0,y=270).wait(1000).release().perform() try:
driver.find_element_by_class_name("android.widget.Switch") except NoSuchElementException:
print("解锁失败!")
else:
print("解锁成功!")

参考转载:https://www.cnblogs.com/xuzhongtao/p/9723222.html

python+Appium自动化:TouchAction九宫格实战的更多相关文章

  1. Python+Appium自动化环境搭建

    appium工作原理 appium 在android端工作流 client端也就是我们 test script是我们的webdriver测试脚本. 中间是起的Appium的服务,Appium在服务端起 ...

  2. python接口自动化10-excel设计模式实战

    前言 一.简介 1.环境准备:python+requests+excel+unittest+ddt,主要安装以下环境,其它一般都有了,没有自行安装: pip install xlrd pip inst ...

  3. python+Appium自动化:读取Yaml配置文件

    Yaml简介 Yaml:"Yet Another Markup Language"(是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名 ...

  4. python+Appium自动化:MultiAction多点触控

    MultiAction MultiAction 是多点触控的类,常用于模拟用户多点操作. 主要包含这add()还有perform()两个方法,模拟多点触控,需要导入TouchAction还有Multi ...

  5. python+Appium自动化:H5元素定位

    问题思考 在混合开发的App中,经常会有内嵌的H5页面.那么这些H5页面元素该如何进行定位操作呢? 解决思路 针对这种场景直接使用前面所讲的方法来进行定位是行不通的,因为前面的都是基于Andriod原 ...

  6. python+Appium自动化:id元素定位

    元素定位 与web自动化一样,app自动化元素定位也是非常重要的一环,,appium也是提供了很多元素定位的方法,比如:id.name.class.层级定位等等. 元素定位方式 id name cla ...

  7. Python + Appium 自动化操作微信入门看这一篇就够了

    简介 Appium 是一个开源的自动化测试工具,支持 Android.iOS 平台上的原生应用,支持 Java.Python.PHP 等多种语言. Appium 封装了 Selenium,能够为用户提 ...

  8. python appium自动化报“Encountered internal error running command: UnknownError: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to remote server

    运行app自动化代码时报"Encountered internal error running command: UnknownError: An unknown server-side e ...

  9. python+appium 自动化2--元素定位uiautomatorviewer

    出处:https://www.cnblogs.com/yoyoketang/p/6128741.html 前言: 可以打开手机上的app了,下一步元素定位uiautomatorviewer,通过定位到 ...

随机推荐

  1. 带你手写基于 Spring 的可插拔式 RPC 框架(五)注册中心

    注册中心代码使用 zookeeper 实现,我们通过图片来看看我们注册中心的架构. 首先说明, zookeeper 的实现思路和代码是参考架构探险这本书上的,另外在 github 和我前面配置文件中的 ...

  2. MongoDB的可视化工具(Studio 3T)的安装

    通过可视化工具,我们可以不用在命令行操作MongoDB了,可以直接使用类似于SQLyog的软件进行相关操作 1.下载地址(二者择其一即可),可使用迅雷来进行下载,否则下载速度极其慢 2018.4.6版 ...

  3. 对于大于等于3的整数n,在区间【n,3/2 * n】中一定存在一个素数

    对于大于3的整数n,在区间[n,3/2 * n]中一定存在一个素数

  4. 小菜鸟之crond

    前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个 ...

  5. linux利用crontab添加定时任务详解

    crontab 作用:添加,查询,删除系统计划任务的指令. [root@localhost ~]# crontab [选项]选项:    -e:    编辑crontab定时任务    -l:    ...

  6. Hadoop环境搭建过程中遇到的问题以及解决方法

    1.启动hadoop之前,ssh免密登录slave主机正常,使用命令start-all.sh启动hadoop时,需要输入slave主机的密码,说明ssh文件权限有问题,需要执行以下操作: 1)进入.s ...

  7. 对Python中print函数参数的认识

    输出函数是最常用的,对print()参数的准确认识尤为重要. sep='':sep参数表示函数中不同value的分隔符,默认为一个空格. end='':end参数表示函数结尾的处理,默认换行. 例如: ...

  8. python以不同方式打印输出九九乘法表

    参考:http://www.cnblogs.com/suiy-160428/p/5594389.htmlpython输出 9*9 乘法口诀表 矩形输出九九乘法表: for i in range(1,1 ...

  9. centos7 + postgresql10

    mysql被黑惨了,换了个超复杂的密码都不行,黑客会删除你所有的自定义库,然后插一个warning表,让你给他汇比特币. 提醒大家放在在公网的DB,要非常注意数据的安全性,万一被勒索了,真是mmp了. ...

  10. jquery model 框设定

    https://www.bootcdn.cn/   国内网址引用 js function searchItemInfo(conditionNo,lotCD,itemKey) { var conditi ...