如下图,我现在只能找到并操作上面的三个图标的元素,下面的 webview 页面完全无法操作。
我用 driver.context 读出来只有 NATIVE_APP,把这个参数传进 driver.switch_to.context("NATIVE_APP"),打印出来显示是 None
完全是新手自己研究,求各位大神指点!!
好像需要让开发把 webview 的 debug 开启
driver._switch_to.context('WEBVIEW_xxxx')
我目前使用的切换方式 xxxx 是读出来的 webview 的名字,你在 appium 中直接浏览到这个页面打印的 driver.context 也是只有 nvtive 的吗,你可以试试,如果出现了 webview 的,可以直接使用。
请问你用的是什么自动化测试工具呢?
1.driver.context("webview")
2.file=driver.page_source 把 file 写入一个 html 文件中
3.然后打开 html,就可以像 web 端一样用浏览器插件查看其中元素了
#3 楼 @actionwind appium 啊
#4 楼 @wxhhxx123 我试了,不行。关键是没有 webview 这个信息,用 driver.context("webview"),提示时 Unicode 对象不能被调用,更别谈写入文件了
#8 楼 @chenhengjie123 系统是 Android 4.4.2 原生的,但是请问一下,debug 模式怎么改?
我也是打印当前所有的 context,结果只有 NATIVE_APP,不知道怎么切换到 webview,help?
#9 楼 @jh901011 看看这里:
https://sites.google.com/a/chromium.org/chromedriver/getting-started/getting-started---android
留意这句:
ChromeDriver supports running tests on Chrome browser (version 30+) as well as WebView-based apps starting in Android 4.4 (KitKat) that have enabled web debugging and JavaScript.
#11 楼 @chenhengjie123 我改成 debug 模式了,但是在 chrome 页面点击 inspect 后,还是显示不出来,请问怎么回事啊?
#13 楼 @chenhengjie123 安卓 5.0.1 的
#13 楼 @chenhengjie123 额,不需要在弹出来的框框里见到显示的内容么?
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
setContentView(R.layout.activity_main);
webview = (WebView) findViewById(R.id.webview);
WebSettings webSettings = webview.getSettings();
webSettings.setJavaScriptEnabled(true);
webview.loadUrl("http://www.baidu.com");
webview.setWebViewClient(new webViewClient());
}
需要开发在测试的程序里,打开 debug 模式。
Set<String> contextNames = driver.getContextHandles();
for (String contextName : contextNames) {
System.out.println(contextName);
}
Thread.sleep(5000);
driver.context("WEBVIEW_com.example.webviewapp");//根据print内容,填写你要测试context的名称
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("document.getElementById('index-kw').value='111'");
driver.findElementById("index-bn").click();
Thread.sleep(10000);
driver.context("NATIVE_APP");
测试程序可以这样写。
是不是 https 的?
#4 楼 @wxhhxx123 请问有具体的例子吗?可以贴一下吗,感激不尽!