【发布时间】: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