Appium 客户端的引导页怎么实现拖动?

hover · 2014年01月14日 · 最后由 抓蝴蝶 回复于 2015年04月03日 · 2680 次阅读

我们的客户端有 3 张引导页,我用 python 怎么实现从第一页拖动到第二页呢?
self.driver.execute_script("mobile: swipe", {"startX":22, "startY":45,"endX":100,"endY":500,"element":elem.id}) 不起作用

共收到 22 条回复 时间 点赞

不要加 element 参数,直接就给手势操作的起点坐标和终点坐标,然后加上 duration,一般 1 秒就够

我最近也遇到这个问题了。

我的问题在于,我如何确认这个是引导页面呢? 它又不是一个单独的 activity。

#3 楼 @lihuazhang 这个就找特点啊。。。页面上的特殊元素,有特点就可以去判断了,要没有。。。那就反过来。。。尝试去确认页面上没有什么。

try:

swipe_args = { 'startX':0.9, 'startY':0.5, 'endX':0.1, 'endY':0.5, 'duration':10}
self.driver.execute_script("mobile: swipe", swipe_args)
except Exception, e:
print e
这样处理就可以从第一张引导图拖动到第二张了

#5 楼 @jiguanghover 10s 太长了。。。。

我还有一个问题, start 的坐标 和 end 的坐标,x 的距离得有多少,才能触发滑动呢? @spikeshen

#7 楼 @lihuazhang 如果我没记错这个是自定义的,android 提供一个 listener 来监测所有的手势操作,具体你看你的 app 里怎么设置的了

hover #14 · 2014年01月15日 Author

从第一张引导如拖动到第二张可以了,但是从第二张拖动到第三张就不行了,有人知道原因吗?我把 duration 设置为 5 秒了

#9 楼 @jiguanghover 两次操作中间设置间隔了没有

#9 楼 @jiguanghover 你是 iOS 还是 Android? 我在 iOS 上没有成功。

hover #12 · 2014年01月16日 Author

#10 楼 @spikeshen 两次中间设置什么间隔?我的是 android 客户端

#12 楼 @jiguanghover 你的两次翻页操作啊,或者你截图,看看你第二张到底啥情况

#8 楼 @spikeshen IOS 上有没有 listener 来监测所有的手势操作

#14 楼 @luyi0824 目前测的都是 android,ios 不清楚,但是按照目前 android 的实现,都是发送一个命令,然后让手机端模拟用户的手势操作

拖动 Android 的引导页用 Java 怎么实现?

java 实现拖动引导页:
TimeUnit.SECONDS.sleep(10);
JavascriptExecutor jse=(JavascriptExecutor) driver;
HashMap scriptObject=new HashMap();
scriptObject.put("startX", 0.95);
scriptObject.put("startY", 0.5);
scriptObject.put("endX", 0.05);
scriptObject.put("endY", 0.5);
scriptObject.put("duration", 0.5);
for(int i=1;i<4;i++){

jse.executeScript("mobile: swipe", scriptObject);
}
TimeUnit.SECONDS.sleep(1);

#9 楼 @jiguanghover 写个 for 循环就行了

#5 楼 @jiguanghover 谢谢了 这个可以用 再加个 for 循环就能跑多个引导页

求大神帮助,谢谢!!!!

#5 楼 @jiguanghover
问题描述:引导页滑动玩第四页(一共四页)程序抛异常
程序代码段:
38 for i in range(4):
39 if driver.find_element_by_class_name("android.widget.ImageView"):
40 swipe_args = { 'startX':400, 'startY':400, 'endX':60, 'endY':500, 'duration':1}
41 driver.execute_script( "mobile: swipe", swipe_args)
42 print"slide the %d page" % (i+1)
43 sleep(3)
44 else:
45 break

对应的 log 日志:
slide the 1 page
slide the 2 page
slide the 3 page
Traceback (most recent call last):
File "D:\eclipse-workspace\and-python\src\phonetest\huadong.py", line 41, in
driver.execute_script( "mobile: swipe", swipe_args)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 401, in execute_script
{'script': script, 'args':converted_args})['value']
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 173, in execute
self.error_handler.check_response(response)
File "build\bdist.win32\egg\appium\webdriver\errorhandler.py", line 29, in check_response
selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command.

#17 楼 @guoke 这个把 script 改成 flick,appium1.3.4.1 不支持了,只能在 1.2.3.1 上跑没问题,flick 在这俩上边都能执行,而且成功率跟速度都快,而且 duration 可以去掉不用加

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册