Appium 测试微信小程序 Webview

Posted peachlf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Appium 测试微信小程序 Webview相关的知识,希望对你有一定的参考价值。

通过微信打开debugx5.qq.com,或者直接扫下面二维码

 


勾选【打开TBS内核Inspector调试功能】

 

 

Chrome查看页面元素

手机连接电脑,查看是否连接成功。如下展示设备号则为连接成功

 

 

进入任意小程序,以【X东】为例,在Chrome浏览器访问chrome://inspect/#devices

 


点击inspact,即可查看页面元素

 

 

 

 

小程序的进程

微信有很多的进程,每一个小程序都运行在不同的进程中。
进入【X东】后,看下当前运行在哪个进程中

 


我们可以看到,当前的小程序运行在com.tencent.mm:appbrand0中,记住这个进程,记住啦

 

Appium编写测试用例

最关键的一点,需要添加androidProcess这一项,也就是我们上面的com.tencent.mm:appbrand0
我用python写一个简单的demo

desired_caps = {
            \'platformName\': \'Android\',
            \'fastReset\': \'false\',
            \'deviceName\': \'XXXXXX\',
            \'appPackage\': \'com.tencent.mm\',
            \'appActivity\': \'.ui.LauncherUI\',
            \'fullReset\': \'false\',
            \'unicodeKeyboard\': \'True\',
            \'resetKeyboard\': \'True\',
            \'chromeOptions\': {
                \'androidProcess\': \'com.tencent.mm:appbrand0\'
                }
            }
driver = webdriver.Remote(\'http://localhost:4723/wd/hub\', desired_caps)
driver.find_element_by_name("发现").click()
driver.find_element_by_name("小程序").click()
driver.find_element_by_name("X东购物").click()
driver.switch_to.context(\'WEBVIEW_com.tencent.mm:appbrand0\')
time.sleep(5)
print(driver.page_source)

切换Webview失败

我遇到过一种切换Webview失败的情况,下面贴上appium的报错日志。

> info: Chromedriver: Changed state to \'stopped\'
> error: Chromedriver: Chromedriver exited unexpectedly with code null, signal SIGTERM
> warn: Chromedriver for context WEBVIEW_com.tencent.mm:appbrand1 stopped unexpectedly
> warn: Chromedriver quit unexpectedly, but it wasn\'t the active context, ignoring
> error: Chromedriver: Error: A new session could not be created. (Original error: session not created exception
> from unknown error: Runtime.executionContextCreated has invalid \'context\': {"auxData":{"frameId":"32496.2","isDefault":true},"id":2,"name":"","origin":"https://servicewechat.com"}
>   (Session info: chrome=57.0.2987.132)
>   (Driver info: chromedriver=2.18.343845 (73dd713ba7fbfb73cbb514e62641d8c96a94682a),platform=Windows NT 6.1 SP1 x86_64))
>     at JWProxy.command$ (lib/proxy.js:133:15)
>     at tryCatch (D:\\Appium\\node_modules\\appium\\node_modules\\appium-chromedriver\\node_modules\\appium-jsonwp-proxy\\node_modules\\babel-runtime\\regenerator\\runtime.js:67:40)
>     at GeneratorFunctionPrototype.invoke [as _invoke] (D:\\Appium\\node_modules\\appium\\node_modules\\appium-chromedriver\\node_modules\\appium-jsonwp-proxy\\node_modules\\babel-runtime\\regenerator\\runtime.js:315:22)
>     at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (D:\\Appium\\node_modules\\appium\\node_modules\\appium-chromedriver\\node_modules\\appium-jsonwp-proxy\\node_modules\\babel-runtime\\regenerator\\runtime.js:100:21)
>     at GeneratorFunctionPrototype.invoke (D:\\Appium\\node_modules\\appium\\node_modules\\appium-chromedriver\\node_modules\\appium-jsonwp-proxy\\node_modules\\babel-runtime\\regenerator\\runtime.js:136:37)
>     at bound (domain.js:284:14)
>     at GeneratorFunctionPrototype.runBound (domain.js:297:12)
>     at run (D:\\Appium\\node_modules\\appium\\node_modules\\appium-chromedriver\\node_modules\\appium-jsonwp-proxy\\node_modules\\babel-runtime\\node_modules\\core-js\\library\\modules\\es6.promise.js:89:39)
>     at D:\\Appium\\node_modules\\appium\\node_modules\\appium-chromedriver\\node_modules\\appium-jsonwp-proxy\\node_modules\\babel-runtime\\node_modules\\core-js\\library\\modules\\es6.promise.js:100:28
>     at flush (D:\\Appium\\node_modules\\appium\\node_modules\\appium-chromedriver\\node_modules\\appium-jsonwp-proxy\\node_modules\\babel-runtime\\node_modules\\core-js\\library\\modules\\$.microtask.js:17:13)
>     at process._tickDomainCallback (node.js:381:11)
>  { [Error: A new session could not be created. (Original error: session not created exception
> from unknown error: Runtime.executionContextCreated has invalid \'context\': {"auxData":{"frameId":"32496.2","isDefault":true},"id":2,"name":"","origin":"https://servicewechat.com"}
>   (Session info: chrome=57.0.2987.132)
>   (Driver info: chromedriver=2.18.343845 (73dd713ba7fbfb73cbb514e62641d8c96a94682a),platform=Windows NT 6.1 SP1 x86_64))]
>   status: 33,
>   value: { message: \'session not created exception\\nfrom unknown error: Runtime.executionContextCreated has invalid \\\'context\\\': {"auxData":{"frameId":"32496.2","isDefault":true},"id":2,"name":"","origin":"https://servicewechat.com"}\\n  (Session info: chrome=57.0.2987.132)\\n  (Driver info: chromedriver=2.18.343845 (73dd713ba7fbfb73cbb514e62641d8c96a94682a),platform=Windows NT 6.1 SP1 x86_64)\' },

注意最后那一段的chrome和chromedriver的版本

 


查看对应表可知,两者版本不对应,需要替换chromedriver

 


将Appium的chromedriver替换为相应版本后,即可成功切换。

 

原文:https://www.cnblogs.com/ai594ai/p/8615835.html

原本:https://testerhome.com/topics/12003

以上是关于Appium 测试微信小程序 Webview的主要内容,如果未能解决你的问题,请参考以下文章

appium——微信小程序自动化

使用Appium 测试微信小程序和微信公众号方法

appium+python自动化56-微信小程序自动化(摩拜为例)

✨ 实战系列 ✨ 1️⃣ 微信小程序自动化测试实践(附 Python 源码)❤️

appium 测试微信公众号 切换webview

APP自动化测试必知必会Appium之微信小程序自动化测试