通过AppiumLibrary在Robot Framework中使用大型iOS TabelViews

时间:2019-04-22 20:33:20

标签: appium robotframework appium-ios xcuitest python-appium

我正在使用各种大小自动执行的应用程序中有很多TabelViews(ListViews)。 几乎在所有列表中,单元格都有共同的属性,通过这些属性,我可以使用Get Webelements并与特定索引的元素进行交互。因此,我有一个通用关键字,可以很好地与较小的列表(约20个项目)配合使用:

Find element with locator in position x
    [Arguments]  ${position}  ${locator}
    wait until page contains element  ${locator}
    @{elements} =  get webelements  ${locator}
    [Return]  @{elements}[${position}]

当我尝试将这种策略与包含很多元素的TabelViews一起使用时,事情就变得很复杂了,特别是如果TabelView中的数据是通过惰性加载(例如每页20个)加载的。

最有线的是,当我运行此关键字以在TabelView中查找仅加载了20个项目的单元格时(但如果滚动至页面末尾,它将加载更多内容),appium有时会找到80元素,有时会发现40,有时会超时,当我尝试单击索引为0的元素时,它做不到,因为Appium的元素大小为0。

似乎有些神奇的鸦片击中了列表的底部,并且下一部分数据开始加载,这就是为什么有时我得到80个项目,而如果事情真的很慢的话我超时的原因。而且似乎索引0中的元素不是当时在屏幕上的元素,而是元素中尚未淹没在屏幕上的元素。

一旦我从iOS应用程序代码中禁用了延迟加载,因此仅显示第一页的项目(20个项目),并且appium无法获得下一部分的20个项目,thin开始按预期工作

我完全感到困惑,不知道该怎么做。 我已经在Google上搜索了很多,并尝试了各种解决方案,但是每次获得更多有线结果都没有成功。

如果以前每个人都有这样的问题,请帮助我。 如果您需要任何其他信息,例如appium日志,我尝试解决此问题的确切方法,请告诉我。

Appium版本为v1.12.1 带有Python 2.7的机器人框架版本为3.1.1 Appium库版本为1.5.0.2 iOS版本是11.4.1和12.2

0 个答案:

没有答案