![](/img/trans.png)
[英]How to scroll down to click the element in Android using appium and java?
[英]How to add web element names in android scroll view into an ArrayList using Appium Java?
我在android的滚动视图中有一个元素列表。 我需要将所有元素名称添加到ArrayList中。 我尝试了多种滚动方式,但没有一种能够满足我的要求。 请帮助我实现这一目标。
这是元素列表的类名称: android.support.v7.widget.RecyclerView
这是每个元素的ID: com.testapp.poker:id/recyclerViewCards
:id/ com.testapp.poker:id/recyclerViewCards
List <String> elementNameList = new ArrayList();
public void getWebElementsNameList(String classNameOfElementList, String elementId){
System.out.println("Items found:");
Gauge.writeMessage("Items found:");
int i = 1;
for(WebElement element : getWebElements(classNameOfElementList, elementId)) {
System.out.println(i + ") " + element.getText());
Gauge.writeMessage(i + ") " + element.getText());
elementNameList.add(element.getText());
i++;
}
}
上面的代码将仅获取当前视图中可见的元素。 我需要一些帮助来通过滚动逻辑对其进行修改。
这是预期的行为。 UIAutomator可以返回可见的元素。 与硒不同,appium(UiAutomator)无法看到屏幕上不可见的元素。
解决问题的方法是:获取可见元素并将其添加到arraylist,然后滚动到下一个元素并添加到arraylist,依此类推,直到列表结束。
您可以尝试这样的事情
List <String> elementNameList = new ArrayList();
public void getWebElementsNameList(String classNameOfElementList, String elementId){
nameStart = "";
System.out.println("Items found:");
Gauge.writeMessage("Items found:");
int i = 1;
while(true){
for(WebElement element : getWebElements(classNameOfElementList, elementId)) {
System.out.println(i + ") " + element.getText());
Gauge.writeMessage(i + ") " + element.getText());
elementNameList.add(element.getText());
i++;
}
if (!keepSwipping()) {
break;
}
}
}
private static String nameStart = "";
private boolean keepSwipping() {
if (isElementPresent(By.xpath(FIRST_ELEMENT_XPATH)) && isElementPresent(By.xpath(LAST_ELEMENT_XPATH))) {
AndroidElement firstElement = (AndroidElement) driver.findElementByXPath(FIRST_ELEMENT_XPATH);
AndroidElement lastElement= (AndroidElement) driver.findElementByXPath(LAST_ELEMENT_XPATH);
if (nameStart.equals(firstElement.getText())) {
return false;
} else {
nameStart = firstElement.getText();
swipe(lastElement.getLocation().x, lastElement.getLocation().y, firstElement.getLocation().x,
firstElement.getLocation().y, 2000);
}
return true;
}
return false;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.