0

我有一个列表框,其中列出了印度的所有州,我需要使用滚动选择特定的州。

尝试过 Touchactions 尝试过 Java 脚本执行器

JavascriptExecutor je = (JavascriptExecutor) driver;
AndroidElement sct = driver.findElement(By.xpath("//android.view.View[@text='Karnataka']"));
je.executeScript("arguments[0].scrollIntoView(true);",sct);
4

2 回答 2

0
  1. Appium 没有任何直接的 Scroll 方法
  2. 通过使用 AndroidUiAutomator 定位器和 new UiScrollable(new UiSelector()).scrollIntoView(tag(/"value/")) 您可以向上滚动到元素。

试试下面的代码:

driver.findElementByAndroidUIAutomator("new UiScrollable(new UiSelector()).scrollIntoView(tagName(\"value\"));");
于 2019-07-04T03:03:31.723 回答
0

您的方法有点错误,当涉及到Appium测试时,您不能使用Element.scrollIntoView ,因为您仅限于Appium 可以理解的特定移动命令列表。

您需要重构代码以使用mobile:shellcommand,例如:

Dimension windowSize = driver.manage().window().getSize();
Map<String, Object> args = new HashMap<>();
args.put("command", "input");
args.put("args", Lists.newArrayList("swipe", windowSize.width / 2,
        windowSize.height / 2, windowSize.width / 2, windowSize.height));
while (driver.findElements(By.xpath("//android.view.View[@text='Karnataka']")).size() == 0) {
    driver.executeScript("mobile: shell", args);
}
driver.findElement(By.xpath("//android.view.View[@text='Karnataka']")).click();

或者,您可以通过SeeTest Appium Extensions使用SwipeWhileNotFound命令

seetest.swipeWhileNotFound("Up", 0, 2000, "NATIVE", "xpath=//android.view.View[@text='Karnataka']", 0, 1000, 5, true)
于 2019-07-03T08:37:30.443 回答