前言:
- 在 appium2.0 之前,在移动端设备上的触屏操作,单手指触屏和多手指触屏分别是由 TouchAction 类,Multiaction 类实现的。
- 在 appium2.0 之后,这 2 个方法将会被舍弃。会报如下错误:
"[Deprecated] 'TouchAction' action is deprecated. Please use W3C actions instead."
目录
🍑Appium2.0之前长按元素方法:
2.0之前使用TouchAction方法
🍓方法:
- 导入TouchAction类库
- 定位要长按的元素
- 使用TouchAction的long_press方法,指定等待时间3s。(Note:此处wait单位为ms。)
- 长按之后要松开,所以用了一个click方法。
🍓代码如下:
# 导入类库
from appium.webdriver.common.touch_action import TouchAction
# 定位想要长按的元素
el = driver.find_element(By.ID, 'com.android.calculator2:id/clr')
# 使用long_press方法
TouchAction(driver).long_press(el).perform().wait(3000)
driver.find_element(By.ID, 'com.android.calculator2:id/clr').click()
🍑Appium2.0之后长按元素方法:
2.0之后使用ActionChains的w3c_actions方法。
🍧找了很多文章,但是都没有找到关于W3C长按元素的的直接用法,所以参考官方说明文档网络驱动程序 (w3.org)以及该篇中的一些介绍写的方法,如果你有更好的,可以在评论区告诉我哦。
概念什么的就不介绍了,直接查看官方说明即可。参考selenium源码如下,当然不止这些用法,这里只放了我参考的源码。
🍓思路:
- 导入selenium的ActionChains类库
- 使用指针输入源pointer的鼠标操作PointerActions,如上图。
- 定位要长按的元素
- 使用click_and_hold方法按住元素并保持
- 使用pause方法指定按住的停顿时间2s(Note:单位为s)
- 使用release方法松开鼠标
- 最后使用perform方法执行以上操作。
🍓代码如下:
# 导入类库
from selenium.webdriver import ActionChains
# 定位需要长按的元素
el = driver.find_element(By.ID, 'com.android.calculator2:id/clr')
# 使用Ww3c长按该元素
actions = ActionChains(driver)
# 使用click_and_hold方法按住元素并保持
actions.w3c_actions.pointer_action.click_and_hold(el)
# 使用pause方法指定按住的停顿时间2s
actions.w3c_actions.pointer_action.pause(2)
# 使用release方法松开鼠标
actions.w3c_actions.pointer_action.release()
# 最后使用perform方法执行以上操作。
actions.perform()
🍃 本篇就只介绍w3c_actions的长按用法了,其他用法后续在慢慢更新了。