appium测试-如何定位WebView进行测试

appium测试中,APP中有时候有H5页面,如何对其中的WebView进行测试;这里以模拟器中APIDemo中的例子做演示,在APIDemo->Views->WebView中选择点击WebView元素appium测试-如何定位WebView进行测试_第1张图片

第一种方法:如果有AccessibilityId就可以直接根据其来获取

driver.findElementByAccessibilityId("Hello World! - 1").click();

第二种方法:利用chromedriver和chrome的DevTool来定位元素

  • 1、下载手机chrome对应版本的Chromedriver并设置capabilitiy-chromedriverExecutableDir的chromedriver的绝对路径,否则可能会报错

        An unknown server-side error occurred while processing the command.
        Original error: unknown error: Chrome version must be >= 55.0.2883.0
    

appium测试-如何定位WebView进行测试_第2张图片
版本对应下载地址:https://github.com/appium/appium/blob/4fd9758c3fefdb83be3ec0cc96128739dce8092d/docs/en/writing-running-appium/web/chromedriver.md
appium测试-如何定位WebView进行测试_第3张图片
capabilitiy设置:

capabilities.setCapability("chromedriverExecutableDir","D:\\QinZhen\\TestDev\\chromedrivers\\");
  • 2、在浏览器中输入chrome://inspect,页面将显示设备上已启用调试的 WebView 列表。
    appium测试-如何定位WebView进行测试_第4张图片
  • 3、点击inspect开始调试想要调试的 WebView
    appium测试-如何定位WebView进行测试_第5张图片

注:真机测试的话必须从你的APP中启用 WebView 调试。要启用 WebView 调试,请在 WebView 类上调用静态方法 setWebContentsDebuggingEnabled。(很多小伙伴可能会问具体到底要怎么启用?这个需要找研发配合,让研发在代码中打开调试功能才行)。而模拟器中是默认开启的

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    WebView.setWebContentsDebuggingEnabled(true);
}
  • 4、切换至WebView需要context信息,可以用getContextHandles循环打印的方式,在执行过程中获取
for (Object c : driver.getContextHandles()){
            System.out.println(c.toString());
        }
        Thread.sleep(3000);
        for (Object c : driver.getContextHandles()){
            System.out.println(c.toString());
        }

appium测试-如何定位WebView进行测试_第6张图片

  • 5、通过driver.context()完成WebView 的切换,再通过CSS进行页面元素的定位操作
		//开始往webview里面进行切换
        driver.context("WEBVIEW_com.example.android.apis");
        //切换完成后可以用css进行定位
        driver.findElementByCssSelector("body > a").click();

效果演示:

你可能感兴趣的:(自动化测试,App自动化/Appium)