python+Appium自动化:TouchAction九宫格实战
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九宫格实战的更多相关文章
- Python+Appium自动化环境搭建
appium工作原理 appium 在android端工作流 client端也就是我们 test script是我们的webdriver测试脚本. 中间是起的Appium的服务,Appium在服务端起 ...
- python接口自动化10-excel设计模式实战
前言 一.简介 1.环境准备:python+requests+excel+unittest+ddt,主要安装以下环境,其它一般都有了,没有自行安装: pip install xlrd pip inst ...
- python+Appium自动化:读取Yaml配置文件
Yaml简介 Yaml:"Yet Another Markup Language"(是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名 ...
- python+Appium自动化:MultiAction多点触控
MultiAction MultiAction 是多点触控的类,常用于模拟用户多点操作. 主要包含这add()还有perform()两个方法,模拟多点触控,需要导入TouchAction还有Multi ...
- python+Appium自动化:H5元素定位
问题思考 在混合开发的App中,经常会有内嵌的H5页面.那么这些H5页面元素该如何进行定位操作呢? 解决思路 针对这种场景直接使用前面所讲的方法来进行定位是行不通的,因为前面的都是基于Andriod原 ...
- python+Appium自动化:id元素定位
元素定位 与web自动化一样,app自动化元素定位也是非常重要的一环,,appium也是提供了很多元素定位的方法,比如:id.name.class.层级定位等等. 元素定位方式 id name cla ...
- Python + Appium 自动化操作微信入门看这一篇就够了
简介 Appium 是一个开源的自动化测试工具,支持 Android.iOS 平台上的原生应用,支持 Java.Python.PHP 等多种语言. Appium 封装了 Selenium,能够为用户提 ...
- 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 ...
- python+appium 自动化2--元素定位uiautomatorviewer
出处:https://www.cnblogs.com/yoyoketang/p/6128741.html 前言: 可以打开手机上的app了,下一步元素定位uiautomatorviewer,通过定位到 ...
随机推荐
- 最新 美图java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.美图等10家互联网公司的校招Offer,因为某些自身原因最终选择了美图.6.7月主要是做系统复习.项目复盘.LeetCode ...
- vue 页面 添加背景音乐
背景音乐 添加背景音乐 并有单击事件 循环播放 <template> <div id="page"> <div style="width ...
- Java开发环境不再需要配置classpath!
前言: 之前发布了关于java开发环境配置的文章,经过与网友的交流,我了解到在jdk1.5以后,java开发环境配置的时候,确实不需要对classpath进行配置,但市面上的书籍,以及一些博客.还是老 ...
- 在vue项目中,将juery设置为全局变量
1.首先执行:npm install jQuery --save-dev,在package.json里加入jQuery. 2.修改build下的webpack.base.conf.js 方法一: 首 ...
- 【1.0】shell常用信息
[1]获取IP地址 /sbin/ifconfig|grep -A1 -E "^eth0|em2"|grep "inet addr"|awk -F':' '{pr ...
- [转帖]GNU/Linux与开源文化的那些人和事
GNU/Linux与开源文化的那些人和事 时间:2015-09-24 作者:admin 分类:新手入门 阅读:167次 http://embeddedlinux.org.cn/emb-linux/ ...
- oracle索引2
问什么问题? 索引有什么代价?哪些场景下你需要建索引?或者有时候反过来问,哪些场景下不推荐建索引. 建好索引之后,怎么才能最高效地利用索引?或者反过来问,请说出一个无法有效利用已建索引的案例. 索引的 ...
- oracle杀死正在执行的进程
1 查询目前正在执行的终端和进程, SELECT /*+ rule */ s.username,decode(l.type,'TM','TABLE LOCK','TX','ROW LOCK',NULL ...
- Servlet的request和response
SERVLET API中forward() 与redirect()的区别? 答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址:后者则是完全的跳转,浏览器将会得到跳转的地址 ...
- (一)springMvc 底层运作流程
目录 什么是 springMvc SpringMVC的底层运作流程 什么是 springMvc springMvc 是spring 框架的一个模块,这也就意味着二者不需要通过整合层(整合包)进行整合 ...