appium测试app时如何切换到webview

文章目录


在这里插入图片描述

前言

很多 app 都会存在 webview 控件,我们使用 appium 在测试 app 难免会遇到 webview,我们可以直接使用 uiautomatorviewer 去硬抓取,当然我们推荐使用 pc 的 chrome 去抓,因为这样更稳定一些

代码

进入 webview

getContextHandles 这个方法我们可以发现一般有如下的 context

  • NATIVE_APP
  • WEBVIEW_com.example.testap

我们需要进入的是第二个

driver.getContextHandles().forEach((context) -> {
    if (context.toString().contains("WEBVIEW")) {
        driver.context(context.toString());
    }
});

在 webview 中找到指定窗口

在 webview 中往往会有多窗口,我们需要切换到指定的窗口我们才能点击按钮,这个切换窗口实际就和 selenium 很类似了,如下代码所示我们可以通过输出窗口中的信息才检查那个窗口才是我们需要的,最后我们发现我们需要的就是第一个窗口

// 用来调试定位所需要点击的控件在 webview 的哪一个窗口中
driver.getWindowHandles().forEach((window) -> {
    driver.switchTo().window(window);
    System.out.println("==标题==");
    System.out.println(driver.getTitle());
    System.out.println("==全文==");
    System.out.println(driver.getPageSource());
});

// 切换窗口(经测试发现在第一个窗口中)
Set<String> set = driver.getWindowHandles();
Object[] arr = set.toArray();
driver.switchTo().window(arr[0].toString());

退出 webview

退出 webview 实际就是进入 NATIVE_APP,所以和进入 webview 操作一致

driver.getContextHandles().forEach((context) -> {
    if (context.toString().contains("NATIVE_APP")) {
        driver.context(context.toString());
    }
});

猜你喜欢

转载自blog.csdn.net/abcnull/article/details/107587969