print self.driver.contexts:
[u'NATIVE_APP', u'WEBVIEW_undefined', u'WEBVIEW_com.android.browser', u'WEBVIEW_com.android.quicksearchbox']
备注:我不知道为什么有时候会 print 出 u'WEBVIEW_undefined
aaa='WEBVIEW_com.tencent.mm:tools'
self.driver.switch_to.context(aaa)
sleep(5)
self.driver.find_element_by_class_name('search_item_inner').click()
具体操作就是这样的,有时候切 webview 就直接报错,有时候切进 webview 的时候 一直处于缓冲状态! 报错 chrome not reachable
appium 代码报错如下
error: Chromedriver: Chromedriver exited unexpectedly with code null, signal SIGTERM
info: Chromedriver: Changed state to 'stopped'
error: Chromedriver: Error: An error occurred (Original error: chrome not reachable
(Driver info: chromedriver=2.18.343837
warn: Chromedriver for context WEBVIEW_com.tencent.mm:tools stopped unexpectedly
warn: Chromedriver quit unexpectedly, but it wasn't the active context, ignoring
环境是:
求大神请教阿
下载最新的 chromedriver 试一下 好像 2.27 了都
要你们排个版真是太难了
我跟楼主遇到一样的问题,后来设置一下配置信息解决了。https://testerhome.com/topics/7097
@TheRoadNotTaken Taken 你好 这个配置信息我已经加了还是老样子 能加下好友么 我的 QQ: 3351829108
@cynic 切换 webview 的问题解决了 现在就是 操作 webview 里面的元素 click 报错... 不知道啥情况...
#5 楼 @zhangjunjie 小程序里的元素我也找不到 有的公众号页面元素我用 xpath 可以定位到进行操作,但是不是每个都可以 不知道什么原因
我切换成功
[debug] [JSONWP Proxy] Proxying [GET /status] to [GET http://127.0.0.1:8000/wd/hub/status] with no b
ody
[debug] [JSONWP Proxy] Got response with status 200: "{\"sessionId\":\"\",\"status\":0,\"value\":{\"
build\":{\"version\":\"alpha\"},\"os\":{\"arch\":\"x86_64\",\"name\":\"Windows NT\",\"version\":\"6.
1.7601 SP1\"}}}"
[debug] [JSONWP Proxy] Proxying [POST /session] to [POST http://127.0.0.1:8000/wd/hub/session] with
body: {"desiredCapabilities":{"chromeOptions":{"androidPackage":"com.tencent.mm","androidUseRunningA
pp":true,"args":[],"androidProcess":"com.tencent.mm:appbrand0","extensions":[],"androidDeviceSerial"
:"ZX1G4294SH"}}}
[debug] [JSONWP Proxy] Got response with status 200: {"sessionId":"83a43f95f4d58aaa08c13278d617eb15"
,"status":0,"value":{"acceptSslCerts":true,"applicationCacheEnabled":false,"browserConnectionEnabled
":false,"browserName":"chrome","chrome":{"chromedriverVersion":"2.26.436362 (5476ec6bf7ccbada1734a0c
dec7d570bb042aa30)"},"cssSelectorsEnabled":true,"databaseEnabled":false,"handlesAlerts":true,"hasTou
chScreen":false,"javascriptEnabled":true,"locationContextEnabled":true,"mobileEmulationEnabled":fals
e,"nativeEvents":true,"pageLoadStrategy":"normal","platform":"ANDROID","rotatable":false,"takesHeapS
napshot":true,"takesScreenshot":true,"unexpectedAlertBehaviour":"","version":"37.0.0.0","webStorageE
nabled":true}}
[debug] [Chromedriver] Changed state to 'online'
[debug] [MJSONWP] Responding to client with driver.setContext() result: null
[HTTP] <-- POST /wd/hub/session/9a81663a-b01d-4846-90e0-779e160c4644/context 200 5078 ms - 76、
但是找元素时候提示这个
[debug] [JSONWP Proxy] Got response with status 200: {"sessionId":"83a43f95f4d58aaa08c13278d617eb15"
,"status":7,"value":{"message":"no such element: Unable to locate element: {\"method\":\"xpath\",\"s
elector\":\"//*[text()='机票']\"}\n (Session info: webview=37.0.0.0)\n (Driver info: chromedriver=
2.26.436362 (5476ec6bf7ccbada1734a0cdec7d570bb042aa30),platform=Windows NT 6.1.7601 SP1 x86_64)"}}
@utopia 我也是已经进入到 webview 了 但是执行里面的 click 就报错 跟你差不多的报错 跟楼主一模一样 ,有解决的好心人能告诉下解决方法吗
谁用 python 点击微信小程序里的 美团外卖->美食 成功的? click 成功的?
小程序的 androidProcess 不是 WEBVIEW_com.tencent.mm:tools ,要设置对应的 com.tencent.mm:appbrand0 com.tencent.mm:appbrand1 等,和每次打开小程序的循序有关,再切换上下文,提示 [debug] [Chromedriver] Changed state to 'online' 才真的进入的 WEBVIEW。
但是我找元素时候报错了
[debug] [JSONWP Proxy] Got response with status 200: {"sessionId":"83a43f95f4d58aaa08c13278d617eb15"
,"status":7,"value":{"message":"no such element: Unable to locate element: {\"method\":\"xpath\",\"s
elector\":\"//*[text()='机票']\"}\n (Session info: webview=37.0.0.0)\n (Driver info: chromedriver=
2.26.436362 (5476ec6bf7ccbada1734a0cdec7d570bb042aa30),platform=Windows NT 6.1.7601 SP1 x86_64)"}}
@utopia androidProcess 是填写 com.tencent.mm:appbrand0 -1
但是切换 webview 的时候是: self.driver.switch_to.context->'WEBVIEW_com.tencent.mm:tools'
还是: self.driver.switch_to.context->‘com.tencent.mm:appbrand0-2‘ ?
我看@seveniruby 发的帖子 他 androidProcess 填的是 com.tencent.mm:appbrand0 但是切换 webview 写的是 self.driver.switch_to.context(‘WEBVIEW_com.tencent.mm:tools’)
还有他的 xpath 路径 我感觉有问题 运行就报错 ....
具体操作:微信->发现->小程序->搜索美团外卖->点击进入->转 webview->然后实行 点击 click ‘美食’! 直接报错
这是他的 xpath click:
driver.findElementByXPath("//[contains(@url, '美食')]").click()
driver.findElementByXPath("//[contains(., '金百万')]").click()
#11 楼 @xiaoxuxu 注意格式,应该是 self.driver.switch_to.context->‘WEBVIEW_com.tencent.mm:appbrand0‘
#12 楼 @zhangjunjie
原因大概是 getsource 看到 body 是空的 ,所以 xpath 什么也找不到,你这种方式是无效的
@utopia 刚刚我也证实了 谷歌的 inspect 不能用来定位微信小程序 因为 get source 完全与谷歌定位到的 xpath 路径不一样 不知道 seveniruby 怎么做到的..感觉好像用了什么工具 devtool ? app 混合型的 webview 好像是能实现的
@zhangjunjie ,我和你一样:测试公众号是没问题的,但是小程序定位不到控件。据说腾讯自家的测试工具 xtest 可以测试小程序 ,可以研究下
@hukui51770 xtest 是记录点击页面的位置,然后回放,用例是这样的
sleep(1000)
clickpx(0.2517,0.9344, clicktime, TimeMarker(CaseN))
--null
sleep(1000)
clickpx(0.6285,0.5458, clicktime, TimeMarker(CaseN))
我用的是 nexus 6 android 7.0 xtest 还没适配,低版本是好的,可以定位小程序的 控件
tap(-2, 'WX-VIEW', '搜 索', '@0%1:android.widget.FrameLayout%1:android.widget.FrameLayout%1:android.widget.FrameLayout%1:android.widget.FrameLayout%1:android.widget.FrameLayout%1:android.widget.FrameLayout%1:android.widget.FrameLayout%1:android.widget.FrameLayout%1:android.widget.LinearLayout%2:android.widget.FrameLayout%1:android.widget.LinearLayout%1:android.widget.FrameLayout%1:android.widget.FrameLayout%1:android.widget.FrameLayout%1:android.widget.FrameLayout%1:android.widget.AbsoluteLayout//BODY/WX-VIEW[1]/WX-VIEW[1]/WX-VIEW[2]/WX-VIEW[1]/WX-VIEW[6]/WX-VIEW[1]|70',0.4323,0.6288, 20, TimeMarker(CaseN), 'com.tencent.mm.plugin.appbrand.ui.AppBrandUI')
@hukui51770 @utopia 可以用 Macaca 好像可以测微信小程序!
@xiaoxuxu 小程序的控件怎么定位
@TheRoadNotTaken 微信小程序的元素 我 click 稍微动了一下 但是没有点击进入? 知道什么情况吗
还有就是 switch_to 公众号界面 10 次成功 2 次...大几率切换失败
公众号界面打开的第二个公众号界面 操作好像又卡住了 session 2 分钟后报错 print source 显示 None?
有谁知道吗
macaca 是可以的
正如楼上几位提到的,腾讯 XTest 支持小程序自动化测试哈。而且已经支持 7.0 手机啦。
请问下 Xtest 下载链接失效?
发现了同样的问题,切换至小程序 webview 后,driver.page_source 得到的源码和 chrome://inspect/#device 打开的源码不一样。所以一直定位不到小程序的 webview 元素。请问你现在解决了吗?
请问楼主解决了吗
我切换到小程序的 webview 后,切换成功,打印出来的源码跟 chrome 上显示的小程序源码一点也不一样,路径什么的都不一样,是不是就像楼主说的,不能使用 chrome 来查看小程序的源码,那要用什么其他的方法吗