【问题标题】:Appium not able to scroll on iOS 8.4Appium 无法在 iOS 8.4 上滚动
【发布时间】:2015-11-22 21:04:06
【问题描述】:

我尝试使用以下代码在 Appium 上成功滚动:

// java
JavascriptExecutor js = (JavascriptExecutor) driver;
HashMap<String, String> scrollObject = new HashMap<String, String>();
scrollObject.put("direction", "down");
scrollObject.put("element", ((RemoteWebElement) element).getId());
js.executeScript("mobile: scroll", scrollObject);

但是,由于已知的 appium 问题,尝试滚动到 UITableView 底部之外时出现 javascript 错误: https://github.com/appium/appium/issues/4836

这个问题与事实上 appium 的 isDisplayed() 方法总是返回 true (无论单元格在屏幕上是否可见)并且 appium 无法点击不可见的单元格,意味着 appium 无法滚动和选择对象。

有人找到解决办法了吗?

【问题讨论】:

    标签: java testing automation appium


    【解决方案1】:

    所以目前看来可能没有办法解决这个问题。 Darshan 上面提到了这个滚动问题在 iOS 8.4 中仍然存在,从网上冲浪看来其他人也有同样的看法

    【讨论】:

      【解决方案2】:

      使用轻弹作为一种可能的临时解决方案。我们可以在屏幕上滑动和滚动以及元素进行滑动。我们实际上不能在 UIAScrollView 上滑动,但我们可以在 UIACollectionView 上滑动。

      JavascriptExecutor js = (JavascriptExecutor) driver;
      HashMap scrollObject = new HashMap();
      scrollObject.put("direction", "down");
      js.executeScript("mobile: scroll", scrollObject);
      

      要解决 isDisplayed() 始终为 true 的问题,您可以尝试

       if(!driver.findElements(By.name(using)).isEmpty()) {
      ...
      }
      

      用你的定位器替换'使用',我认为这个滚动问题必须通过Appium mobile:scroll来解决,你的代码看起来很好,你也可以尝试使用垂直滑动而不是滚动。

      【讨论】:

      • Darshan,这是使用“移动:滚动”,对吗?似乎与我在问题中的原始代码非常相似?
      • 我认为他们从 8.3 解决了这个滚动问题,但它仍然存在于 8.4 中,我们需要找到一些替代方案..
      • 嗨,达山。感谢您提供更新的答案 - 会试一试。垂直滑动需要什么代码(而不是mobile:scroll)?
      猜你喜欢
      • 2018-08-08
      • 2015-04-01
      • 2018-08-08
      • 2015-05-13
      • 2016-10-20
      • 1970-01-01
      • 2017-02-04
      • 2015-06-22
      • 2020-11-12
      相关资源
      最近更新 更多