【问题标题】:appium ios not refreshing after swipe滑动后appium ios不刷新
【发布时间】:2017-04-02 00:23:22
【问题描述】:

我的测试包括一个元素列表。 单击第一个将其打开,然后从右向左滑动以访问下一个并确保它们不同。

在 Android 上它运行良好,但由于某种原因,驱动程序似乎在滑入新页面后并没有自行刷新。

如果我尝试访问文本,即使我在列表的第二个或第三个元素中,我也会继续使用第一页中的元素

Appium iOS 有刷新页面吗?

这是我的代码:

找到我的头衔

driver.findElement(By.id("title_label"));

刷卡

Dimension size = driver.manage().window().getSize();
driver.swipe(size.getWidth()-100, size.getHeight()/2, 100, size.getHeight()/2, 500);

然后重新制作查找标题功能,甚至我的 ipad 上的屏幕正在改变,并且可以看到新标题,在代码中我仍然有旧标题

有什么想法吗?

编辑:

只是为了清楚,如果不是。滑动到新页面时会发生这种情况,因此整个页面都在刷新。 它不仅仅是它的一部分或在同一页面的元素内滑动。

【问题讨论】:

  • 在刷卡后打印出driver.getPageSource() 的内容,你能检查一下你得到了什么吗?也许有两个 id 为“title_label”的元素首先是您已经找到的原始元素?
  • 你有没有在刷完之后再拿元素?
  • @Domestus 似乎它将旧页面保留在内存中某处,并且我可以访问 2 个标题而不是 1 个,并且由于我使用的方法是 findElement 我只得到第一个但如果我使用 findElements 我得到了 2 个标题,而第 2 个是正确的……真是个 ios 废话……
  • 如果两者都存在,那是因为应用程序本身的 UI 是如何编码的。如果 getPageSource() 显示两者,则可能意味着这两个元素都存在,即使另一个元素被隐藏。您可能想检查是否可以根据 getPageSource 中列出的某些属性来创建第二个 findElement() 语句。例如带有 2 个检查的 xpath 查询:findElement(By.xpath("//UIAElement[@name='title_label'][@attribute='true']")); 否则尝试修复应用程序 UI 行为。

标签: appium appium-ios


【解决方案1】:

尝试获取位置为getLocation() 然后您可以使用以下方式实现向各个方向滑动或滚动:

 TouchAction action = new TouchAction(driver);

            int startY = element1.getLocation().getY() + (element1.getSize().getHeight() / 2);
            int startX = element1.getLocation().getX() + (element1.getSize().getWidth() / 2);

            int endX = element2.getLocation().getX() + (element2.getSize().getWidth() / 2);
            int endY = element2.getLocation().getY() + (element2.getSize().getHeight() / 2);

            action.press(startX, startY).waitAction(2000).moveTo(endX, endY).release().perform();

【讨论】:

  • 我确实编辑了我的问题,因为它可能不够清楚。我正在刷到一个全新的页面,所以不是刷卡本身不起作用。滑动工作正常。它在新页面上找到不起作用的标题,但仍然给出旧页面标题
  • 啊,对不起,我误会了你,所以我建议刷卡后等待一段时间
  • 我试图睡觉但没有改变任何东西:/
猜你喜欢
  • 2015-09-23
  • 2018-01-25
  • 1970-01-01
  • 2019-08-04
  • 1970-01-01
  • 2013-04-20
  • 1970-01-01
  • 2015-05-13
  • 2020-08-06
相关资源
最近更新 更多