在Appium自动化测试中,滑动手机屏幕是一项常见且重要的操作,Appium提供了多种方式来实现模拟用户的滑动屏幕动作,主要包括swipe滑动、scroll滚动和drag拖拽事件,以下是对这几种滑动方式的详细解释及实现方法:
一、Swipe滑动
1.
Swipe滑动是从页面的一个坐标位置滑动到另一个坐标位置,只能是两个点之间的滑动,它适用于需要精确控制滑动起点和终点的场景。
2. 参数说明
start_x
:起点X轴坐标
start_y
:起点Y轴坐标
end_x
:终点X轴坐标
end_y
:终点Y轴坐标
duration
(可选):滑动持续的时间,单位为毫秒,默认为0
3. 实现方法
from appium import webdriver import time 创建Desired capabilities对象,添加启动参数 desired_caps = { "platformName": "Android", "platformVersion": "7.1.2", "deviceName": "127.0.0.1:21503", "appPackage": "com.android.settings", "appActivity": ".Settings" } 启动APP driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps) 获取屏幕大小 size = driver.get_window_size() print("设备屏幕大小:", size) 使用swipe方法在设置首页实现向上滑动 start_x = 300 start_y = 1000 end_x = 300 end_y = 500 driver.swipe(start_x, start_y, end_x, end_y, duration=5000) 关闭APP time.sleep(3) driver.quit()
4. 注意事项
坐标的选择不能在屏幕的坐标之外,也不能选择在边界值上,要在屏幕坐标之内的范围选择。
如果滑动不明显,可以增加滑动次数。
二、Scroll滚动
1.
Scroll滚动是从页面的一个元素滑动到另一个元素,直到页面自动停止,它适用于需要从一个元素滑动到另一个元素的场景。
2. 参数说明
origin_el
:滑动开始的元素
destination_el
:滑动结束的元素
duration
(可选):滑动效果的持续时间,单位为毫秒,默认为None
3. 实现方法
from appium import webdriver import time 创建Desired capabilities对象,添加启动参数 desired_caps = { "platformName": "Android", "platformVersion": "7.1.2", "deviceName": "127.0.0.1:21503", "appPackage": "com.android.settings", "appActivity": ".Settings" } 启动APP driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps) 定位到存储菜单栏 el1 = driver.find_element_by_xpath("//*[contains(@text,'存储')]") 定位到WLAN菜单栏 el2 = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]") 执行滑动操作 driver.scroll(el1, el2, duration=2000) 关闭APP time.sleep(3) driver.quit()
4. 注意事项
scroll方法具有滑动的惯性,惯性的大小可以通过duration参数来控制,duration越大惯性越小。
三、Drag拖拽事件
1.
Drag拖拽是从页面的一个元素滑动到另一个元素,第二个元素代替第一个元素原本屏幕上的位置,它适用于需要将一个元素拖拽到另一个元素位置的场景。
2. 参数说明
origin_el
:滑动开始的元素
destination_el
:滑动结束的元素
duration
(可选):滑动效果的持续时间,单位为毫秒,默认为None
3. 实现方法
from appium import webdriver import time from appium.webdriver.common.touch_action import TouchAction 创建Desired capabilities对象,添加启动参数 desired_caps = { "platformName": "Android", "platformVersion": "7.1.2", "deviceName": "127.0.0.1:21503", "appPackage": "com.android.settings", "appActivity": ".Settings" } 启动APP driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps) 定位到存储菜单栏 el1 = driver.find_element_by_xpath("//*[contains(@text,'存储')]") 定位到更多菜单栏 el2 = driver.find_element_by_xpath("//*[contains(@text,'更多')]") 执行拖拽操作 driver.drag_and_drop(el1, el2, duration=2000) 关闭APP time.sleep(3) driver.quit()
4. 注意事项
drag_and_drop方法没有惯性。
四、自定义滑动方式
除了上述三种滑动方式外,还可以通过TouchAction类来实现自定义的滑动方式,可以使用press()和move_to()方法组合来实现复杂的滑动操作。
from appium import webdriver from appium.webdriver.common.touch_action import TouchAction import time 创建Desired capabilities对象,添加启动参数 desired_caps = { "platformName": "Android", "platformVersion": "7.1.2", "deviceName": "127.0.0.1:21503", "appPackage": "com.android.settings", "appActivity": ".Settings" } 启动APP driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps) 定位到存储菜单栏 el1 = driver.find_element_by_xpath("//*[contains(@text,'存储')]") 定位到更多菜单栏 el2 = driver.find_element_by_xpath("//*[contains(@text,'更多')]") 执行自定义滑动操作 TouchAction(driver).press(el1).move_to(el2).release().perform() 关闭APP time.sleep(3) driver.quit()
在使用Appium进行自动化测试时,根据不同的场景选择合适的滑动方式非常重要,Swipe滑动适用于需要精确控制滑动起点和终点的场景;Scroll滚动适用于从一个元素滑动到另一个元素的场景;Drag拖拽适用于需要将一个元素拖拽到另一个元素位置的场景;而TouchAction则提供了更灵活的自定义滑动方式,通过合理选择和使用这些滑动方式,可以更加高效地进行移动端应用的自动化测试。
各位小伙伴们,我刚刚为大家分享了有关“appiumjs滑动手机”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/716153.html