appium怎么寻找android webview上的元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了appium怎么寻找android webview上的元素相关的知识,希望对你有一定的参考价值。

mWebView.setWebViewClient(new WebViewClient() // 这个方法在用户试图点开页面上的某个链接时被调用 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) if(url!=null) // 如果想继续加载目标页面则调用下面的语句 // view.loadUrl(url); // 如果不想那url就是目标网址,如果想获取目标网页的内容那你可以用HTTP的API把网页扒下来。 // 返回true表示停留在本WebView(不跳转到系统的浏览器) return true; ); 参考技术A public void doClick()

//通过id查找元素

WebElement el = driver.findElement(By.id("com.tencent.mm:id/do"));

el.click();

//等待3s观察显示

try

Thread.sleep(3000);

catch(InterruptedException e)

e.orintStackTrace();



Appium - WebView測试(Android)

Appium - WebView測试

作者: Max.Bai

时间: 2015/07



Appium - WebView測试(Android)

如今App都是混合型的。有原生的也包括WebView的,appium測试的时候就须要在原生和WebView之间切换才干完毕測试。


1. 查看全部context

查看当前全部的窗体

Set<String> contextNames = driver.getContextHandles();
System.print(contextNames);
结果包括眼下全部打开的app, 比如我打开了ES,我的被測应用,还有另外一个应用,

[NATIVE_APP, WEBVIEW_com.test.android, WEBVIEW_com.estrongs.android.pop, WEBVIEW_com.xxxxx.sjj]

NATIVE_APP就是我的被測应用原生界面

WEBVIEW_com.test.android 是我的被測应用打开的WebView

另外两个一个是ES, 一个其它的应用(混合型的)


2.切换到WebView

通过上面方法获得当前的全部context

我们能够通过context方法切换到指定的应用

<pre name="code" class="java">driver.context("WEBVIEW_com.test.android");
driver.findElementByID("wd");


切换完毕后就能够像測试web应用一样測试了,全部的定位和web同样。

3. 切换到NativeApp

測试完web应用,须要操作原生应用的时候就须要切换回NATIVE_APP

我们能够通过context方法切换到原生应用

<pre name="code" class="java">driver.context("NATIVE_APP");

这样之后的操作就都是原生应用的操作了

4. Demo

	/**
	 * Switch to NATIVE_APP or WEBVIEW
	 * @param sWindow window name
	 */
	private void switchToWindow(String sWindow) {
		LogManager.getLogger(this.getClass()).info("Swith to window: " + sWindow);
		Set<String> contextNames = driver.getContextHandles();
		LogManager.getLogger(this.getClass()).info("Exists windows: " + contextNames.toString());
		for (String contextName : contextNames) {
			if (contextName.contains(sWindow)) {
				driver.context(contextName);
				break;
			}
		}
	}


switchToWindow("WEBVIEW_com.test.android");
driver.findElementByID("wd").sendKeys("test");
driver.findElementByID("sub").click();
switchToWindow("NATIVE_APP");

















以上是关于appium怎么寻找android webview上的元素的主要内容,如果未能解决你的问题,请参考以下文章

Appium - WebView測试(Android)

通过Appium获取Android app中webview

解决android SDK不能更新,appium测试混合app无法返回webview问题

无法在 webview 中使用 appium android 定位混合应用程序的 webelements

12-appium-查看webview元素

定位器不起作用,除了 WebView 中 Appium for Android 上的 id