如何定位APP上的webview控件

背景:

在使用appium进行app测试时,发现很难定位webview上的控件.

使用chrome-development tool 来定位元素:

  • android手机连接PC, 并确保在cmd中输入adb devices 可以找到devices的序列号.
  • 打开APP的webview 页面。
  • 在 PC机的chrome 浏览器上输入如下地址:
   chrome://inspect/#devices
  • 你会看到如下图:
    如何定位APP上的webview控件_第1张图片

  • 点击 上图中的inpect,你可以看到你手机的webview页面已经在PC上了,如下图。如果你点击了inpect跳出来的页面是空白的,原因你的浏览器没。
    如何定位APP上的webview控件_第2张图片

  • 在DevTools窗口顶部有个“search”按钮点击然后选择邮箱地址输入框的,你会定位到它的id,如下图:
    如何定位APP上的webview控件_第3张图片

  • android版本小于4.4,那么你需要使用Selendroid模式来作为测试引擎,在测试初始化的时候需要设置该capability。如果你的android版本大于等于4.4,那么Appium作为测试引擎,然后通过chromedriver来处理webview。如果你使用的是appium测试引擎,调试WebView需要满足安卓系统版本为Android 4.4+已上,并且需要在你的APP内配置相应的代码,在WebView类中调用静态方法setWebContentsDebuggingEnabled,如下

  if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.KITKAT) {
	WebView.setWebContentsDebuggingEnabled(true);
  }
  • 在appium自动化测试脚本中,首先要进入webview 页面,然后进行操作,回到原生的APP页面(NATIVE_APP)。
Set<String> contextSet =((AppiumDriver<WebElement>)driver).getContextHandles();
for(String context : contextSet){
	System.out.printf("页面上的context内容为:" + context);
	if(context.toLowerCase().contains("webview")){
		((AppiumDriver<WebElement>)driver).context(context);//进入webview
		 break;
	}
}
driver.findElement(By.id("username")).sendKeys("[email protected]");
driver.switchTo().window("NATIVE_APP");//回到原生app

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