一、APP元素事件操作
1、swip滑动事件
⚠️从一个坐标位置滑动到另一个坐标位置,只能是两个点之间的滑动
方法:swipe(start_x, start_y, end_x, end_y, duration=None)
参数:
a.start_x:起点X轴坐标
b.start_y:起点Y轴坐标
c.end_x: 终点X轴坐标
d.end_y,: 终点Y轴坐标
e.duration: 滑动这个操作一共持续的时间长度,单位:ms
业务场景:
1.进入设置
2.从坐标(421,292)滑动到坐标(763,1847 )
代码:
from appium import webdriver from appium.webdriver.common.touch_action import TouchAction import time from selenium.webdriver.support.wait import WebDriverWait # 导入WebDriverWait类 caps = {} caps["platformName"] = "Android" caps["platformVersion"] = "5.1.1" caps["deviceName"] = "HUAWEI_MLA_AL10" caps["appPackage"] = "com.android.settings" caps["appActivity"] = "com.android.settings.Settings" driver = webdriver.Remote("http://localhost:4723/wd/hub", caps) #WLAN wlan = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]") # #应用 yy = driver.find_element_by_xpath("//*[contains(@text,'应用')]") driver.swipe(89,1443,189,298,5000)
2、scroll滑动事件
⚠️ 从一个元素滑动到另一个元素,直到页面自动停止
方法:scroll(origin_el, destination_el)
参数:
a.origin_el:滑动开始的元素
b.destination_el:滑动结束的元素
业务场景:
a.进入设置页
b.模拟手指从存储菜单位置 到 WLAN菜单位置的上滑操作
代码:
from appium import webdriver from appium.webdriver.common.touch_action import TouchAction import time from selenium.webdriver.support.wait import WebDriverWait # 导入WebDriverWait类 caps = {} caps["platformName"] = "Android" caps["platformVersion"] = "5.1.1" caps["deviceName"] = "HUAWEI_MLA_AL10" caps["appPackage"] = "com.android.settings" caps["appActivity"] = "com.android.settings.Settings" driver = webdriver.Remote("http://localhost:4723/wd/hub", caps) #WLAN wlan = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]") # #应用 yy = driver.find_element_by_xpath("//*[contains(@text,'应用')]") # driver.swipe(189,1443,189,298,5000) driver.scroll(yy,wlan) time.sleep(2)2、
二、APP模拟手势高级操作
TouchAction是AppiumDriver的辅助类,主要针对手势操作,比如滑动、长按、拖动等,
原理是将一系列的动作放在一个链条中发送到服务器,服务器接受到该链条后,解析各个动作,逐个执行。
1、手指轻敲操作
模拟手指轻敲一下屏幕操作
方法:tap(element=None, x=None, y=None)
方法:perform() # 发送命令到服务器执行操作
参数:
a.element:被定位到的元素
b.x:相对于元素左上角的坐标,通常会使用元素的X轴坐标
c.y:通常会使用元素的Y轴坐标
业务场景:
a.进入设置
b.点击WLAN选项
代码:
from appium import webdriver from appium.webdriver.common.touch_action import TouchAction import time from selenium.webdriver.support.wait import WebDriverWait # 导入WebDriverWait类 caps = {} caps["platformName"] = "Android" caps["platformVersion"] = "5.1.1" caps["deviceName"] = "HUAWEI_MLA_AL10" caps["appPackage"] = "com.android.settings" caps["appActivity"] = "com.android.settings.Settings" driver = webdriver.Remote("http://localhost:4723/wd/hub", caps) # 通过元素定位方式敲击屏幕 el = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]") TouchAction(driver).tap(el).perform() time.sleep(2)
代码:
from appium import webdriver from appium.webdriver.common.touch_action import TouchAction import time from selenium.webdriver.support.wait import WebDriverWait # 导入WebDriverWait类 caps = {} caps["platformName"] = "Android" caps["platformVersion"] = "5.1.1" caps["deviceName"] = "HUAWEI_MLA_AL10" caps["appPackage"] = "com.android.settings" caps["appActivity"] = "com.android.settings.Settings" driver = webdriver.Remote("http://localhost:4723/wd/hub", caps) # 通过元素定位方式敲击屏幕 TouchAction(driver).tap(x=1025,y=103).perform() time.sleep(2)
结果:
2、手指移动操作
模拟手机的滑动操作
方法:move_to(el=None, x=None, y=None)
参数:
a.el:定位的元素
b.x:相对于前一个元素的X轴偏移量
c.y:相对于前一个元素的Y轴偏移量
业务场景:
a.进入设置
b.向上滑动屏幕到可见"安全"选项
c.进入到安全
d.点击屏幕锁定方式
e.点击图案
f.绘制图案
代码:
from appium import webdriver import time from appium.webdriver.common.touch_action import TouchAction caps = {} caps["platformName"] = "Android" caps["platformVersion"] = "5.1.1" caps["deviceName"] = "HUAWEI_MLA_AL10" caps["appPackage"] = "com.android.settings" caps["appActivity"] = "com.android.settings.Settings" driver = webdriver.Remote("http://localhost:4723/wd/hub", caps) #WLAN wlan = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]") #应用 yy = driver.find_element_by_xpath("//*[contains(@text,'应用')]") driver.scroll(yy,wlan,duration=1000) aq = driver.find_element_by_xpath("//*[contains(@text,'安全')]") aq.click() time.sleep(1) #屏幕锁定方式 pmsdfs = driver.find_element_by_xpath("//*[contains(@text,'屏幕锁定方式')]") pmsdfs.click() time.sleep(1) # 点击图案按钮 driver.find_element_by_xpath("//*[contains(@text,'图案')]").click() time.sleep(1) # 绘制图案四个坐标 1:(166,627) 2:(528,615) 3:(173,977) 4:(532,1340) TouchAction(driver).press(x=166, y=627).wait(100).move_to(x=528, y=615).wait(100) \ .move_to(x=173, y=977).wait(100).move_to(x=532, y=1340).release().perform() time.sleep(1)
结果: