Xcode 6.3 iOS simulator 7.1 和 8.3 java 环境 测试下来 driver.swipe() 方法在模拟器上都无效,谷歌了一把,碰到此问题的有很多,有一个人说 apple 从 iOS 7 开始修改了 simulator 的 api 导致这个功能不能用;大家都是这样吗?? 很多人说真机是可以用的,我还没有试,因为还不太会真机的 capabilities 和 appium.app 的 iOS setting
请看: 译文版: 缺陷和解决方法 英文版: bugs-and-workarounds
#1 楼 @chenhengjie123 你自己有没有试过能不能再模拟器上使用 swipe?你给的官方链接上貌似没有我想要答案 -- 收回我上面的话,看到了你说的缺陷和建议,虽然是针对 scroll 方法的,但是可能会有用,再次感谢,也为我方才的不细心道歉
#2 楼 @sainthunter 这不仅仅是针对 scroll 方法,而是所有手势(包括 swipe)在模拟器的 scrollable view(包括 ScrollViews, CollectionViews, 和 TableViews)都无效。 我实际使用试过,在模拟器上处在 scrollView 中时 swipe 确实无效。
虽然不等同于 swipe 在模拟器上肯定没用,但大多数需要 swipe 的操作都是在 scrollable view 中进行的(例如引导页),所以还需要自己看一下你需要 swipe 的区域处在什么 view 中。
#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 页?
坑只有自己踩踩才会印象深刻啊·~
之前用模拟器 iphone6plus 8.4 driver.swipe() 不能滑动。。。刚刚更新了 xCode 到 7.2 用模拟器 iPhone6s plus 9.2 driver.swipe() 可以滑动,完美解决。。。用的坐标是:driver.swipe(300,200,0,200,1000); 因为可以滑动了,就没有深究到底是改了坐标奏效,还是改了模拟器奏效~~~~
#3 楼 @chenhengjie123 为啥我在真机上 iPhone6s 上也是滑不动啊,swipe 和 js.executeScript("mobile: scroll", scrollObject); 都不好使。。。
#7 楼 @fengcanfly 什么系统?出错日志?
js.executeScript("mobile: scroll", scrollObject);
这个印象中 appium 早就废弃了?