Appium之模拟手势点击坐标(tap)

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)
原文地址:https://www.cnblogs.com/Maruying/p/13621852.html