识别混合应用程序中的元素 - Android

时间:2017-12-21 05:16:42

标签: selenium appium

我是Android测试新手。我目前正在尝试自动化一个场景。我附上了应用屏幕的快照:

enter image description here

方案

  1. 我需要点击" Clock In"。
  2. 屏幕从底部滑动,如快照中所示。
  3. 我需要选择箭头所示的项目。
  4. 开发人员说它是一个混合应用程序。这里有很多困惑,因为我能够点击" Clock In",但我无法选择" DL 380 Memory Upgrade"。

    质疑

    1. 如何查找" DL 380内存升级"是在Webview / Native?
    2. 如果它是webview中的元素,如何找到它?我找到了#34; CLOCK IN"如下:

      @AndroidFindBy(xpath = "//android.view.View[@resource-id='tab-t0-0']") private AndroidElement clockInTabBtn;

2 个答案:

答案 0 :(得分:0)

您可以使用上下文检查可用视图,并可以使用以下代码切换到该视图:

Set<string> contextNames = driver.getContextHandles();
for (String contextName : contextNames) 
{
System.out.println(contextNames);
//To swicth to webview
if (contextName.contains("WEBVIEW")){
driver.context(contextName);
}
}

请参阅此主题以了解类似问题:https://github.com/appium/appium/issues/7243

答案 1 :(得分:0)

如果它是WebView中的一个元素,那么它的 web 并且您在通过 resource-id 搜索时无法在Web中找到任何内容 - 仅限其本机属性。

我建议使用chrome dev工具来调试混合应用程序。 您可以阅读官方docs进行设置。

基本上你需要:

  1. connect device
  2. 转到Chrome浏览器中的chrome://inspect/#devices
  3. 检查手机&amp;如果出现弹出窗口,则允许usb调试
  4. 检查哪些webViews镀铬了,然后点击inspect找到您需要的那个 enter image description here
  5. 现在,您可以像在Selenum / Web自动化中一样搜索元素及其定位器 enter image description here
  6. 在实际搜索webView之前,不要忘记在appium测试中将上下文切换到WebView
  7. 祝你好运!