繁体   English   中英

使用Appium和Desired功能,我正在设备中启动android应用程序,但无法导航到不在屏幕视图中的元素

[英]Using Appium and Desired capability,i am launching android application in device,but unable to navigate to elements which is not in screen view

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

请先向下滑动组合以使元素可见,然后再与之交互。 代码示例-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);
}

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

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

现在,使用最新的Appium滑动即可为您工作。 如果您想发挥创意并让它在特定区域滚动,则需要做更多的工作,但是这里有一个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知道什么时候看不到东西,对它们进行单击/点击将自动滚动以执行操作。 这使得编写测试变得更加困难,您将始终需要滚动然后检查它是否存在,然后再执行下一步操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM