【问题标题】:Automate IOS UITableview using appium使用 appium 自动化 IOS UITableview
【发布时间】: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
  • 如果您知道单元格的高度,您还可以将表格视图滚动到某个偏移量,然后再尝试找到它。

标签: ios uitableview appium appium-ios


【解决方案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

【讨论】:

    猜你喜欢
    • 2015-11-29
    • 2014-09-03
    • 2015-02-07
    • 2021-01-24
    • 1970-01-01
    • 2015-04-09
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多