Appium Action Chain连续点击失效,分两次执行存在延迟求助
Appium 连续触摸点击一次执行无效果的解决方案
问题分析
你的代码在单次perform()时无法完成两次点击,拆分两次perform()虽能生效但会产生延迟,原因是部分Appium驱动在处理同一段W3C动作序列中的连续触摸操作时,可能无法正确识别第二次位置移动的动作逻辑,导致第二次点击未被执行。
解决方案1:修复W3C ActionBuilder代码
重新构建触摸动作序列,确保所有动作被正确添加到同一个指针输入实例中,驱动能完整解析连续动作:
from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.actions import interaction from selenium.webdriver.common.actions.action_builder import ActionBuilder from selenium.webdriver.common.actions.pointer_input import PointerInput # 初始化动作链 actions = ActionChains(driver) # 创建触摸类型的指针输入 touch_pointer = PointerInput(interaction.POINTER_TOUCH, "touch") # 第一个点击动作:移动到目标位置→按下→暂停→释放→短暂等待 touch_pointer.move_to_location(170, 477) touch_pointer.pointer_down() touch_pointer.pause(0.1) touch_pointer.release() touch_pointer.pause(0.1) # 第二个点击动作:移动到新位置→按下→暂停→释放 touch_pointer.move_to_location(339, 68) touch_pointer.pointer_down() touch_pointer.pause(0.1) touch_pointer.release() # 将指针输入添加到动作构建器并执行 actions.w3c_actions = ActionBuilder(driver) actions.w3c_actions.add_pointer_input(touch_pointer) actions.perform()
解决方案2:使用TouchAction(兼容简化方案)
尽管TouchAction已被官方标记为弃用,但部分Appium驱动仍支持该API,写法更简洁且能避免W3C动作序列的解析问题:
from appium.webdriver.common.touch_action import TouchAction # 构建连续触摸动作:第一次点击→等待100ms→第二次点击→执行 TouchAction(driver)\ .tap(x=170, y=477)\ .wait(100)\ .tap(x=339, y=68)\ .perform()
内容的提问来源于stack exchange,提问作者Chao Xu
相关产品推荐
相关产品推荐

