我正在尝试使用Appium自动化我的本机IOS应用程序。我有一个超过1000个元素的tableview。当我尝试使用Appium从tableview中选择一个单元格时,整个过程都会延迟,我可以在appium控制台中看到appium引擎正在迭代整个tableview项目。
这是我正在使用的代码,
waitUntilElementBecomesClickable(element).click();
public WebElement waitUntilElementBecomesClickable(String element) throws Exception
{
return wait.until(ExpectedConditions.elementToBeClickable(By.name(element)));
}
有没有更好的方法从tableview中点击一个元素(我不想使用XPath,因为我的数据是动态的)
由于
答案 0 :(得分:1)
您需要了解元素层次结构以及UI元素辅助功能。
在元素层次结构的顶部是UIATarget类,它表示被测系统(SUT)的高级用户界面元素 - 即设备(或模拟器)以及iOS和您的应用程序在该设备上运行。出于测试目的,您的应用是最前面的应用(或目标应用),标识如下:
UIATarget.localTarget().frontMostApp();
要访问应用程序的主窗口,您需要指定
UIATarget.localTarget().frontMostApp().mainWindow();
表格:
在app的表视图数组的第一个表视图中,所以你使用零索引([0])指定它,如下所示:
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0];
在表格视图中,每个项目由不同的单个单元格表示。您可以以类似的方式指定单个单元格。例如,使用零索引([0]),您可以按如下方式指定第一个单元格:
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[0];
这些单独的单元格元素中的每一个都可以设计为包含作为自定义子元素的记录。在第一个单元格中,您可以使用此行代码按名称访问记录f
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[0].elements()["Record Name"];
通过这种方式,您可以让细胞指数到达特定细胞。希望这很有用,问候