tap模拟手势点击坐标
tap是通过给定坐标,模拟手势点击页面上的元素。
参数:第一个是positions,是list类型最多五个(元组表示),duration是持续时间,单位为ms。函数原型如下:
tap(positions, duration=None)
如:driver.tap([(100, 20), (100, 60), (100, 100)], 500)
实践操作:
打开“小猿搜题app”,点击“猿辅导” -》搜索框,并录入“熊猫”进行查找。
思路:先通过weditor工具找到需要点击的坐标点,再在脚本中使用坐标作为参数。
1、工具定位坐标点
2、脚本源码
from appium import webdriver from time import sleep from appium.webdriver.common.touch_action import TouchAction desired_caps = { 'autoLaunch': 'True', 'deviceName': 'honor10', 'platformName': 'Android', 'platformVersion': '10.0', 'appPackage': 'com.fenbi.android.solar', 'appActivity': 'com.fenbi.android.solar.activity.RouterActivity', 'noReset': 'True', "unicodeKeyboard": "True", # 使用unicode编码方式发送字符串(以便键盘输入中文) "resetKeyboard": "True", # 在运行具有unicodeKeyboard功能的Unicode测试之后,将键盘重置为其原始状态。若单独使用,则忽略。(后需手动进入系统修改回原键盘输入法) } driver = webdriver.Remote('127.0.0.1:4723/wd/hub', desired_caps) sleep(3) TouchAction(driver).tap(x=326, y=2150).release().perform() # driver.tap([(326, 2211)], 500) # 有点奇怪,若使用此处的tap函数,不会报错2211已超出宽高(实际宽高为1080*2190),上一行的tap函数则会包错,但最后调用的也是同一方法... # size = driver.get_window_size() # width = size['width'] # 由于不同手机的宽高像素不同,所以坐标点可改用宽高像素占比的百分比来表示 # height = size['height'] # driver.tap([(width*0.448, height*0.981)]) driver.tap([(875, 150)], 500) sleep(5) driver.find_element_by_id("com.fenbi.android.solar:id/search_bar").send_keys("熊猫") # 报错Message: Cannot set the element to '熊猫'. Did you interact with the correct element? sleep(5) driver.tap([(987, 159)]) sleep(3)