一、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)
结果:

本文详细介绍了使用Appium进行移动应用测试时的手势操作方法,包括基本的滑动事件、模拟手势高级操作如轻敲和移动等,并提供了具体的业务场景及实现代码。





