微信的设置
用微信打开debugx5.qq.com, 这是个微信的x5内核调试页面. 你可以在任何聊天窗口内输入这个网址. 并打开它.
勾选"是否打开TBS内核Inspector调试功能"
使用ChromeDriver编写测试用例
首先安装ChromeDriver
从官方下载或者从你的appium的安装路径里面找chromedriver. 在appium的执行日志里面其实也会打印chromedriver的路径的
然后在电脑上启动它, 设置好端口
chromedriver--url-base=wd/hub--port=8000
可以使用selenium或者appium的客户端去编写测试用例.
如下是我的scalatest的测试用例. 大家可以自己用其他的语言实现
test("test chromedriver weixin"){
valoptions=newChromeOptions()
options.setExperimentalOption("androidPackage","com.tencent.mm")
options.setExperimentalOption("androidUseRunningApp",true)
options.setExperimentalOption("androidActivity",".plugin.webview.ui.tools.WebViewUI")
options.setExperimentalOption("androidProcess","com.tencent.mm:tools")
valcapability=DesiredCapabilities.chrome()
capability.setCapability(ChromeOptions.CAPABILITY,options)
valurl="http://127.0.0.1:8000/wd/hub"
valdriver=newAndroidDriver[WebElement](newURL(url),capability)
driver.get("https://testerhome.com/topics/6954")
println(driver.getPageSource)
driver.quit()
}
使用appium编写测试用例
有人会经常问为什么android上appium不能自动化微信webview, 其实是可以的. 主要是目前的appium有个bug导致的.
在appium中context的切换时, 没有带上一个关键的androidProcess配置导致的.
他会导致appium识别webview的时候, 把com.tencent.mm:tools的webview识别成com.tencent.mm的webview. 从而导致context切换失败.
正确的用appium测试微信h5的方法如下
test("test weixin h5"){
valcapability=newDesiredCapabilities()
capability.setCapability("app","")
capability.setCapability("appPackage","com.tencent.mm")
capability.setCapability("appActivity",".ui.LauncherUI")
capability.setCapability("deviceName","emulator-5554")
capability.setCapability("fastReset","false")
capability.setCapability("fullReset","false")
capability.setCapability("noReset","true")
//capability.setCapability("unicodeKeyboard", "true")
//capability.setCapability("resetKeyboard", "true")
//关键是加上这段
valoptions=newChromeOptions()
options.setExperimentalOption("androidProcess","com.tencent.mm:tools")
capability.setCapability(ChromeOptions.CAPABILITY,options)
valurl="http://127.0.0.1:4723/wd/hub"
valdriver=newAndroidDriver[WebElement](newURL(url),capability)
println(driver.getPageSource)
driver.findElementByXPath("//*[@text='我']").click
driver.findElementByXPath("//*[@text='收藏']").click
driver.findElementByXPath("//*[contains(@text, '美团外卖')]").click
println(driver.getPageSource)
println(driver.getContextHandles)
driver.context("WEBVIEW_com.tencent.mm:tools")
println(driver.getPageSource)
}
最关键的就是这句
valoptions=newChromeOptions()
options.setExperimentalOption("androidProcess","com.tencent.mm:tools")
capability.setCapability(ChromeOptions.CAPABILITY,options)
原链. https://testerhome.com/topics/6954