Appium + python - TouchAction操作
from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
from appium.webdriver.common.multi_action import MultiAction
from time import sleep """
class TouchAction(object):
def __init__(self, driver=None):
self._driver = driver
self._actions = [] def tap(self, element=None, x=None, y=None, count=1):
模拟手指触摸屏 def press(self, el=None, x=None, y=None):
短按:模拟手指按住一个元素,或者坐标 def long_press(self, el=None, x=None, y=None, duration=1000):
长按:模拟按住一个元素,或者坐标 def wait(self, ms=0):
按住元素后的等待时间 def move_to(self, el=None, x=None, y=None):
移动手指到另外一个元素,或者坐标,注意这里坐标不是绝对坐标,是偏移量 def release(self):
释放手指 def perform(self):
执行前面的动作 MultiAction是针对多点触控操作的,是TouchAction的一个补充模块
多点触摸对象是触摸动作的集合。
多点触控手势只有两种方法,即添加和执行。
add用于添加另一个触摸操作到多点触摸。
当perform执行被调用时,添加到多点触摸的所有触摸动作都被发送到AppII,并执行,就像它们同时发生一样。appium首先执行所有触摸动作的第一个事件,然后执行第二个,等等。
""" # el是定位元素的对象 # action0 = TouchAction().tap(el)
# action1 = TouchAction().tap(el)
# MultiAction().add(action0).add(action1).perform() desired_caps = {
"platformName":"Android",
"platformVersion":"5.1.1",
"deviceName":"127.0.0.1:62001",
"appPackage":"com.android.settings",
"appActivity":"com.android.settings/.Settings",
"noReset":"true",
"unicodeKeyboard":"true",
'resetKeyboard': 'true'
} driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) #点击搜索
driver.find_element_by_id("com.android.settings:id/search").click()
driver.find_element_by_id("android:id/search_src_text").send_keys("安全\n")
driver.find_elements_by_id("android:id/search_src_text")[0].click() #屏幕安全保护
driver.find_element_by_id("android.widget.RelativeLayout").click()
driver.find_element_by_xpath("//*[@text = '图案']").click() sleep(5)
#解决问题思路:先获取元素坐标位置,再获取元素大小,然后切割图片,分别计算出每个点的坐标
#定位九宫格元素
jiu = 'resourceId("com.android.settings:id/lockPattern").index(2)'
local = driver.find_element_by_android_uiautomator(jiu).location
print("获取九宫格坐标位置:%s"%local) s = driver.find_element_by_android_uiautomator(jiu).size
print("获取九宫格宽和高:%s"%s) #获取九个点的坐标
google = {}
google[1] = (None,local["x"]+s["width"]/6,local["y"]+s["height"]/6)
google[2] = (None,local["x"]+s["width"]/6*3,local["y"]+s["height"]/6)
google[3] = (None,local["x"]+s["width"]/6*5,local["y"]+s["height"]/6)
google[4] = (None,local["x"]+s["width"]/6,local["y"]+s["height"]/6*3)
google[5] = (None,local["x"]+s["width"]/6*3,local["y"]+s["height"]/6*3)
google[6] = (None,local["x"]+s["width"]/6*5,local["y"]+s["height"]/6*3)
google[7] = (None,local["x"]+s["width"]/6,local["y"]+s["height"]/6*5)
google[8] = (None,local["x"]+s["width"]/6*3,local["y"]+s["height"]/6*5)
google[9] = (None,local["x"]+s["width"]/6*5,local["y"]+s["height"]/6*5)
print(google) def pianyi(a=1,b=2):
'''计算从a点到b点的偏移量'''
g1 = google[a]
g2 = google[b]
r = (None, g2[1]-g1[1], g2[2]-g1[2])
return r #解锁思路:先press按住第一个点,再wait等待,接着移动带第二个点,再wait,最后release释放手指,perform执行
# 执行解锁
TouchAction(driver).press(*google[1]).wait(300).move_to(*pianyi(1,2)).wait(300).move_to(*pianyi(2,3)).wait(
300).move_to(*pianyi(3,5)).wait(300).move_to(*pianyi(5,7)).wait(300).move_to(*pianyi(7,8)).wait(300).move_to(*pianyi(8,9)).wait(
300).release().perform()
Appium + python - TouchAction操作的更多相关文章
- APP测试(appium+Python基础操作)一
一.Appium入门案例 demo from appium import webdriver from time import sleep # server 启用参数 desired_caps = { ...
- Appium + python - input操作实例
import osimport time as t adb = 'adb shell input tap 400 500'os.system(adb) t.sleep(5) class keyeven ...
- appium+python自动化38-adb shell按键操作(input keyevent)
前言 接着上篇介绍input里面的按键操作keyevent事件,发送手机上常用的一些按键操作 keyevent 1.keyevent事件有一张对应的表,可以直接发送对应的数字,也可以方式字符串,如下两 ...
- appium+python自动化43-微信公众号webview操作
前言 上一篇已经解决切换到微信公众号的webview上了,但是定位webview上元素的时候一直提示找不到,打印page_source也找不到页面上的元素,这个问题困扰了一整天,还好最后找到了原因, ...
- appium+python自动化33-解锁九宫格(TouchAction)
TouchAction 1.源码可以在这个路径找到:Lib\site-packages\appium\webdriver\common\touch_action.py class TouchActio ...
- Appium+Python之元素定位和操作
一.常用识别元素的工具 uiautomatorviewer:Android SDK自带的一个工具,在tools目录下 二.元素定位 1.格式:find_element_by_定位方式(va ...
- appium+python自动化52-多点触控MultiAction
前言 MultiAction是针对多点触控操作的,是TouchAction的一个补充模块 TouchAction用法参考前面的一篇:appium+python自动化33-TouchAction 多点触 ...
- appium+python自动化48-长按(long_press)
前言 长按操作是经常会遇到的场景,通过driver可以直接调出long_press_keycode方法,但是这个方法是长按手机上某个按钮,比如长按电源键,长按home键. 长按某个元素或者长按屏幕上某 ...
- Appium+python自动化(二十八)- 滑呀滑,滑到奈何桥喝碗孟婆汤 - 高级滑动(超详解)
简介 奈何桥上叹奈何,三生石前憾三生,彼岸花下非彼岸,奈何三生彼岸人. 相传过了鬼门关便上一条路叫黄泉路,路上盛开着只见花,不见叶的彼岸花.花叶生生两不见,相念相惜永相失,路尽头有一条河叫忘川河,河上 ...
随机推荐
- 洛谷——P1475 控制公司 Controlling Companies
P1475 控制公司 Controlling Companies 题目描述 有些公司是其他公司的部分拥有者,因为他们获得了其他公司发行的股票的一部分.(此处略去一句废话)据说,如果至少满足了以下三个条 ...
- Luogu P1692 部落卫队
解题思路 数据范围不是很大,那应该不是那些普遍的图论的算法.考虑搜索,用暴力解决.从1到N枚举每一个点的位置,搜索这个点事选还是不选.如果在这个点之前选到的点中又和他冲突的点,那就不选,要么就选. 附 ...
- keep
简介 什么是keepalived呢?keepalived是实现高可用的一种轻量级的技术手段,主要用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生.之所以说keepa ...
- Scoop - 在Windows命令行上进行程序安装
2019-01-28 22:49:21 资料来源自Scoop官方网站以及github上的帮助文档 如果有疑惑或者觉得文章有错误请留言以帮助改正 补充内容(2019-04-09 21:11:36):不 ...
- Word2Vec的基本使用
目录 1.建立模型 2.保存与加载模型 3.使用模型 gensim 是 Python 中一款强大的 自然语言处理工具,它包含了常见的模型,其中便有 Word2Vec 这一优秀的 词向量训练工具,可以使 ...
- python3爬虫-通过requests爬取西刺代理
import requests from fake_useragent import UserAgent from lxml import etree from urllib.parse import ...
- Linux 复习一
第一章 Linux简介和基本操作 一.Linux系统的来源和发展 Linux is a free Unix-type operating system originally created by Li ...
- java多线程编程核心技术(三)--线程间通信
1.等待/通知机制 1.wait()方法:使当前执行代码的线程进行等待.wait()方法是Object类的方法,该方法将当前线程放入“预执行队列”中,并在wait()所处的代码行处停止执行.只到被唤起 ...
- webpack打包的基础原理-打包后的文件解读
1.概念 本质上,webpack 基于node平台,利用 node 的各种api来实现 javascript 应用程序的一个静态模块的打包工具. 在打包过程中,构建依赖关系,并且实现模块引用预处理,以 ...
- 非常适合新手的jq/zepto源码分析04
$.extend = function(target){ var deep, args = slice.call(arguments, 1) if (typeof target == 'boolean ...