无法打印在移动视图滚动
问题描述:
如何打印了与Java的appium移动屏幕上显示的所有元素显示的所有元素,其实我已经写了代码: -无法打印在移动视图滚动
List<WebElement> orderidList=driver.findElementsByXPath("//android.widget.TextView[contains(@resource-id,'view_shipments_OrderNo_TextView')]")
for (int i = 0; i < orderidList.size(); i++) {
System.out.println(orderidList.get(i).getText());
}
但它打印的名字的移动电话视图可见的orderids。但是我想要清楚列出所有的orderids,所有orderids在滚动后都可见,我可以实现滚动,但是我不知道我需要滚动多少。请建议! 这里是UI的Automator的截图,我想所有的orderids名单: -
答
这是预期行为。 UiAutomator只能检测Android设备屏幕上的可见元素。你可以得到元素的列表是可见的。如果你想获得所有元素的列表,那么你需要滚动并获取列表,滚动并获取列表等,直到结束。使用Appium Inspector/UiAutomator无法获取Android中隐藏元素的列表
+0
: - 你能否提供这个假人, –
答
就像Vinod已经告诉它,它只会在屏幕上打印可见元素。因此,如果我们手动滚动,则需要让代码执行我们要做的步骤,直到您看不到任何新元素。看看下面的代码。我使用链接的哈希集来维护元素的顺序,而不是捕获任何重复项。
Set<String> appList = new LinkedHashSet<String>();
By by = By.xpath("//android.widget.TextView[contains(@resource-id,'view_shipments_OrderNo_TextView')]");
String currentOrder, newOrder;
do {
currentOrder = driver.findElements(by).get(0).getText();
int count = driver.findElements(by).size();
for (int i = 0; i < count; i++) {
String appName = driver.findElements(by).get(i).getText();
appList.add(appName);
}
driver.swipe(400, 400, 400, 74, 2000);
newOrder = driver.findElements(by).get(0).getText();
} while (!currentOrder.equals(newOrder));
这只是表示您的xpath不正确。 uiautomatorviewer的后截图,所以我们可以为你建立一个有效的xpath –
@Shubham Jain: - 上面添加的图片,请帮助! –