什么是混合应用?
原生控件+html.
一,识别HTML
识别被测元素为原生控件中的HTML内容
如何简单识别App中的页面为html页面?
方法一:开启手机中开发者选项-绘图-显示布局边界,有对应框住的内容为原生内容,H5相关内容不会被框.
方法二:通过定位工具可看到class=android.webkit.WebView
二,确认开启webview的调试模式
默认不开启,如果是公司产品有源码,可让开发加上以下代码重新编译打包,
if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE)) {
WebView.setWebContentsDebuggingEnabled(true);}
如果没有源码的产品可参考相关文章.
三,得到当前所有的contexts
切换之前需要获得所有上下文contexts
driver.contexts
context上下文,类似是用户和操作系统交互的过程打开打窗口,原生控件的context为NATIVE_APP.获取要进入的webview .
四,切换context
driver.switch_to.context("目标context")
五,驱动程序确定
chromedriver需要对应安卓系统的webview版本.
如何确定webview版本?
方法一,工具:uc-devtools,动态获取,获取到webview的数字为驱动的版本.
使用方法:https://www.cnblogs.com/hsmwm/p/15015914.html
方法二,在chrome浏览器中输入:chrome://inspect/#devices
方法三,appium server中日志显示,appium自带一个chromedriver,如果报错会告知不匹配,也会告知具体版本.
如何在代码中指定chromedriver?
在启动参数中可以自定义chromedriver的版本的路径,chromedriverExecutableDir:路径地址.
在本地新建文件夹,其中可放入不同版本chromedriver来应对不同安卓系统版本.
六,元素定位并操作.
webview中定位可使用uc-devtools工具,识别到webview版本点inspect进入,同web元素定位.
原生定位方式:
https://www.cnblogs.com/hsmwm/p/14945017.html
原生定位方法:
https://www.cnblogs.com/hsmwm/p/14968898.html