context在混合应用中 上下文切换原生和webview

什么是上下文?

Context是在编写Android程序经常使用到的对象,意思为上下文对象。常用的有Activity的Context还有Application的Context,同时原生和网页也属于不同的context

#获取当前上下文方法

current_context = driver.current_context

print (current_context)


#获取全部上下文方法

contexts = driver.contexts

print (contexts)

=========================================================================

如何在混合应用用切换原生和webview?


什么是混合应用?

在原生应用中嵌入网页,这类应用统称为混合应用


原生应用与混合应用区别:


如何实现混合应用中测试?

1.原生部分选用UIAutomator

2.webview的网页部分选用ChromeDriver

原生和网页是不同的context,原生native默认的是'NATIVE_APP',网页webview默认的是'WEBVIEW_被测试的进程名称'


混合应用中webview部分

1.先安装一个debug包

2.打开手机或者夜神模拟器开发者模式和调试模式(版本号点击七下)

3.pc端chrome输入:Chrome://inspect#devices',可以查看网页跟selenium一样定位


上下文切换到原生app

driver.switch_to.context('NATIVE_APP')

at = driver.current_context

print (at)

切换成原生app,获取当前的内容,打印出来


上下文切换到webview

driver.switch_to.context(context[webview下标])

at = driver.current_context

print (at)

切换成原生app,获取当前的内容,打印出来,或者不写context【webview下标】,使用'WEBVIEW_被测试的进程名称'也可以


坑:

1.Chrome://inspect#devices需要翻墙才能看元素

2.使用uc-devtools,点击进去空白,需要把设置中 选择本地UI资源

3.如果都没有inspect,查看apk是否是debug的,查看apk是否打开webview调试模式


需要开发加入代码:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)

{

WebView.setWebContentsDebuggingEnabled(true);

}

你可能感兴趣的:(context在混合应用中 上下文切换原生和webview)