使用 appium 自动化 IOS UITableview
Posted
技术标签:
【中文标题】使用 appium 自动化 IOS UITableview【英文标题】:Automate IOS UITableview using appium 【发布时间】:2016-07-29 12:18:37 【问题描述】:我有一个包含大约 50 个元素的 UITableView。在任何时候,只有其中 6 个在屏幕上可见。我想选择一个未添加到表格视图的单元格,或者说我需要从数据列表中选择第 25 项。
现在我正在使用这种方法单击表格视图中的单元格
wait.until(ExpectedConditions.visibilityOf(driver.findElementByAccessibilityId(element))).click();
但它不起作用,因为第 25 个元素尚未添加到视图中。请注意,我正在代码中动态添加表格视图单元格的可访问性标识符。
我怎样才能做到这一点?
*****添加了更多细节******
我的表格视图单元格显示了两个文本视图。货币短名称和货币长名称。
考虑这个例子
英镑
英镑
现在该表格视图单元格的可访问性标识符设置为 英镑。现在我尝试了
driver.scrollTo("GBP") 和 driver.scrollTo("英国英镑")
两者都没有工作。我收到一条错误消息
A element could not be located on the page using the Search parameter
谢谢。
【问题讨论】:
你知道元素的文本吗?因为 driver.scrollTo("Text") 在 ios 中就像一个魅力。 您尝试过 X-Path 吗? x-path 中的索引应该可以帮助您在滚动时访问元素。 我认为你应该在选择之前显示单元格。可能您应该滚动到目标单元格(使用表格视图方法),然后尝试选择它。要查找单元格索引,您可以在模型数组中确定其模型。之所以需要它,是因为 TableView 重用了单元格,并且您在运行时为任何 tableView 的单元格更改 AccessibilityId 如果您知道单元格的高度,您还可以将表格视图滚动到某个偏移量,然后再尝试找到它。 【参考方案1】: String ReqN = "Your required string";
boolean flag = true;
while (flag)
for (i=1;i<=6;i++)
String GetN = driver.findElement(By.xpath("//android.widget.HorizontalScrollView/android.widget.LinearLayout[" + i + "]")).getText();
if (GetN.equals(ReqN))
flag = false;
System.out.println("Your result found");
if (flag)
driver.swipe(145, 765, 145, 180, 3000);
String ReqN :: 您的预定义字符串
String GetN :: 为每个元素获取文本 [1 到 6 我们通过 for 循环获得]
因此,如果未找到您的预定义文本,它将获取前六个元素的文本和匹配,然后它从给定的轴 [这是第 6 个元素到第一个元素] 滑动。所以您将获得新的六个元素和循环将再次执行。
参考。图片Elements & X,Y points
【讨论】:
以上是关于使用 appium 自动化 IOS UITableview的主要内容,如果未能解决你的问题,请参考以下文章
移动端自动化自动化(Android&iOS)——Appium
使用 Appium 自动化 iOS 8 应用程序会导致应用程序冻结