Appium (已解决) appium+python:关于按键的长按问题 long_press

付兰 · March 07, 2016 · Last by 李海燕 replied at December 20, 2016 · 4564 hits

环境是:appium 1.4.16+python
目前网上查的代码是:

action1 = TouchAction(self.driver)
el = self.driver.find_element_by_id('XXXXX1')
action1.long_press(el).wait(10000).perform()

action2 = TouchAction(self.driver)
el = self.driver.find_element_by_id('XXXXX2')
action2.moveTo(el).release().perform()

按照上面的代码没有实现长按,貌似是0.2s的时间,不是10s,然后我自己获取控件然后再获取坐标来定位的,
按照下面两个方法执行:
第一种:

from selenium.webdriver.common.touch_actions import TouchActions
action1=TouchActions(driver)
el = driver.find_element_by_id(" ")
elx=el.location.get('x')
ely=el.location.get('y')
action1.tap_and_hold(elx,ely).perform()
time.sleep(3)
action1.release(elx,ely).perform()

第二种:

el = driver.find_element_by_id(" ")
elx=el.location.get('x')
ely=el.location.get('y')
driver.swipe(elx,ely,elx,ely,duration)

请问对于action1.long_press(el).wait(10000).perform()到底能不能执行,看了社区一个帖子有人说可以,但是我实际操作起来不行,还有人回答修改默认的duration的,如果不修改就用action1.long_press(el).wait(10000).perform()到底要怎样才可以执行才按,谢谢

目前修改成:action1.long_press(el ,None,None,10000).perform()就可以了,
参照这个方法我就可以用tap多次点击了:action1.tap(el,None,None,2).perform()

共收到 13 条回复 时间 点赞
def long_press(self, el=None, x=None, y=None, duration=1000):
"""Begin a chain with a press down that lasts `duration` milliseconds
"""

self._add_action('longPress', self._get_opts(el, x, y, duration))

return self

你的long_press的用法不对吧。 你只传el的话默认是1秒

付兰 #2 · March 07, 2016 作者

#1楼 @zsx10110 什么意思,难道还要传el的x、y吗

#2楼 @a3096556718

action1.long_press(el,None,None,10000).perform()

试试这样 我没验证。

付兰 #4 · March 07, 2016 作者

#3楼 @zsx10110 可以,谢谢你了

我的在win 7 + android 照网上的那样,是可用的额。

付兰 #6 · March 08, 2016 作者

#5楼 @t880216t 我也是win7啊,不知道为啥我的不可以

第二种方法NB啊

el = driver.find_element_by_id(" ")
elx=el.location.get('x')
ely=el.location.get('y')
driver.tap([(elx,ely)],duration)

#8楼 @kesha0 tap+duration其实调用的就是long_press

@zsx10110 请问有没有方法,长按返回键,设置时间长度。long_press方法只能长按界面UI

self.driver.execute_script("mobile: tap", {"tapCount": 1, "touchCount": 1, "duration": 2, "x": 181, "y": 192 })
长按手势mac上录制的代码可以使用

@heminwon 我说的是android的返回键长按操作,源码里的方法long_press方法不管用

@a3096556718
我用你的方法时候报错
org.openqa.selenium.WebDriverException: Method has not yet been implemented (WARNING: The server did not provide any stacktrace information)
主要是perform()这个方法

14Floor has been deleted
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up