2

使用 Appium 和 Desired 功能,我在设备中启动 android 应用程序,但无法导航到不在同一页面的屏幕视图中的元素,JavascriptExecutor 也与 appium 代码不兼容。我使用 UIAutomator 查看器来识别对象。但是只有在屏幕视图中的对象才会被识别。一些我们需要向下滚动,到最后来识别对象,但是 JavascriptExecutor 也与 appium 代码不兼容,并且使用 Keys.END 和 Keys.ARROW_DOWN 我也是无法识别不在同一页面的屏幕视图中的对象。

4

4 回答 4

1

请在与元素交互之前使用向下滑动的组合使元素可见。代码示例 - HashMap swipeObject = new HashMap();

    WebElement we = driver.findElement(By.xpath("/relative"));
    Dimension screenSize = driver.manage().window().getSize();
    Double screenWidth = Double.valueOf(String.valueOf(screenSize.getWidth())) / 2;
    Double screenHeight = Double.valueOf(String.valueOf(screenSize.getHeight())) / 2;
    swipeObject.put("startX", (screenWidth));
    swipeObject.put("startY", screenHeight + 100);
    swipeObject.put("endX", (screenWidth));
    swipeObject.put("endY", (screenHeight));
    swipeObject.put("duration", 1.0);
    driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
    while (!elementPresent(driver,by, 2)) {
        js.executeScript("mobile: swipe", swipeObject);
        Thread.sleep(1000);
    }
    driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
}
于 2014-04-21T06:44:23.557 回答
0

1) 转到 Android sdk 文件夹 --> 工具 --> 执行 uiautomatorviewer.bat 2) 启动 UI Automator 查看器后,单击设备图标 3) 现在您可以查看应用程序屏幕捕获页面的属性 注意:使用 UI automator,您只能以截图方式查看属性

于 2014-03-06T19:06:09.363 回答
0

实际上我的问题是如何在设备中向下滚动。我已经在使用 UIautomatorviewer。但是在设备中只能识别屏幕视图中的元素。如果应用程序的屏幕适合模拟器大小,如果模拟器大小减小,则模拟器可以正常工作。再次无法识别屏幕内视图之外的对象。JavascriptExecutor 也不是与 appium 代码兼容,并且使用 Keys.END 和 Keys.ARROW_DOWN 我也无法识别不在屏幕视图中的对象。请有人知道如何做到这一点。

于 2014-03-07T03:25:12.027 回答
0

使用最新的 Appium,Swipe 现在应该适合您了。如果您想获得创意并让它在特定区域滚动,那需要做更多的工作,但这里有一个 java 代码片段可以开始。

public void swipe(Double startX, Double startY, Double endX, Double endY, Double duration) {
    JavascriptExecutor js = (JavascriptExecutor) driver;
    HashMap<String, Double> swipeObject = new HashMap<String, Double>();
    swipeObject.put("startX", startX);
    swipeObject.put("startY", startY);
    swipeObject.put("endX", endX);
    swipeObject.put("endY", endY);
    swipeObject.put("duration", duration);
    js.executeScript("mobile: swipe", swipeObject);
}

Android 在元素存在或可见之间没有区别。它们要么是真的,要么是假的。另一方面,iOS 知道事物何时不在视野范围内,并且在它们上单击/点击会自动滚动以执行操作。这使得编写测试变得有点困难,并且在执行下一个操作之前,您总是需要滚动并检查它是否存在。

于 2014-04-16T20:24:18.163 回答