Appium 统计一下,driver.swipe () 方法不能在 iOS 模拟器 simulator 上使用?

hunter · 2015年08月30日 · 最后由 陈恒捷 回复于 2016年07月02日 · 1598 次阅读

Xcode 6.3
iOS simulator 7.1 和 8.3
java 环境
测试下来 driver.swipe() 方法在模拟器上都无效,谷歌了一把,碰到此问题的有很多,有一个人说 apple 从 iOS 7 开始修改了 simulator 的 api 导致这个功能不能用;大家都是这样吗??
很多人说真机是可以用的,我还没有试,因为还不太会真机的 capabilities 和 appium.app 的 iOS setting

共收到 8 条回复 时间 点赞

#7 楼 @fengcanfly 什么系统?出错日志?

js.executeScript("mobile: scroll", scrollObject); 

这个印象中 appium 早就废弃了?

#3 楼 @chenhengjie123 为啥我在真机上 iPhone6s 上也是滑不动啊,swipe 和 js.executeScript("mobile: scroll", scrollObject); 都不好使。。。

之前用模拟器 iphone6plus 8.4 driver.swipe() 不能滑动。。。刚刚更新了 xCode 到 7.2 用模拟器 iPhone6s plus 9.2 driver.swipe() 可以滑动,完美解决。。。用的坐标是:driver.swipe(300,200,0,200,1000); 因为可以滑动了,就没有深究到底是改了坐标奏效,还是改了模拟器奏效~~~~

坑只有自己踩踩才会印象深刻啊·~

#3 楼 @chenhengjie123 我发现三页引导页我都没有办法 scroll 或者 swipe,网上找了所有办法都没办法,索性还是换了真机,swipe 没有问题了,但是碰到了新问题。
在 7.1 真机上 swipe 到第三页无法点击 button,button 无 class,无 name,无 id,使用 xpath 查找,在 inspector 中获取的是正确的,button 是在 UIAScrollView[1]/UIAImage[3]/UIAButtonp[1],但是 driver.findElement(By.xpath("//UIAApplication[1]/UIAWindow[1]/UIAScrollView[1]/UIAImage[3]/UIAButton[1]")).click() 不行,会报 an unknown error occured server-side,后来我发现真机上完全不支持 click 方法,后来我是通过 tap 这样解决的:
MobileElement button = (MobileElement) driver.findElement(By.xpath("//UIAApplication[1]/UIAWindow[1]/UIAScrollView[1]/UIAImage[3]/UIAButton[1]"));
button.tap(1, 1);
但是 tap 后到登陆页面,我发现就不能直接用 driver 了,因为会提示找不到,要我 switchto web,但是我都是 native app,没有 web 啊?我如何回到当前 login 页?

#2 楼 @sainthunter 这不仅仅是针对 scroll 方法,而是所有手势(包括 swipe)在模拟器的 scrollable view(包括 ScrollViews, CollectionViews, 和 TableViews)都无效。
我实际使用试过,在模拟器上处在 scrollView 中时 swipe 确实无效。

虽然不等同于 swipe 在模拟器上肯定没用,但大多数需要 swipe 的操作都是在 scrollable view 中进行的(例如引导页),所以还需要自己看一下你需要 swipe 的区域处在什么 view 中。

#1 楼 @chenhengjie123 你自己有没有试过能不能再模拟器上使用 swipe?你给的官方链接上貌似没有我想要答案 -- 收回我上面的话,看到了你说的缺陷和建议,虽然是针对 scroll 方法的,但是可能会有用,再次感谢,也为我方才的不细心道歉

请看:
译文版:
缺陷和解决方法
英文版:
bugs-and-workarounds

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