Appium 同样的页面在 PC 和 Android 的 Chrome 浏览器上可以执行,但在微信公众号里面执行时,部分页面元素 click 没有反应,部分页面切换后报 Proxy error

吴程远 · 2017年01月25日 · 最后由 放飞梦想 回复于 2018年08月03日 · 1665 次阅读

环境信息:
Android 4.4.2 Appium 1.6.3 微信:6.5.3 chrome:55

页面 1

页面 2

问题 1:
切换到微信 Webview 后,页面 1 中的搜索框(1)能够输入文字、能够点击搜索按钮,点击搜索按钮后自动跳转到页面 2,在页面 2 的搜索栏(3)输入文字或点击报错。

问题 2:
切换到微信 Webview 后,页面 1 点击医院(3)没有反应。

问题 1,2 在 PC 和 Android 上的 Chrome 浏览器上执行时是正常的,不知道这里切换到微信上的 WEBVIEW 上去执行不了
@seveniruby

Appium 启动命令:
appium -a 127.0.0.1 -p 4723 -bp 4701 --command-timeout 60

切换到 webview 代码:
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.4.2'
desired_caps['deviceName'] = 'ec3097c9'
desired_caps['appPackage'] = 'com.tencent.mm'
desired_caps['appActivity'] = '.ui.LauncherUI'
desired_caps['unicodeKeyboard'] = 'True'
desired_caps['resetKeyboard'] = 'True'
desired_caps["chromeOptions"] = {'androidProcess': 'com.tencent.mm:tools'}
desired_caps['noReset'] = 'True'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
time.sleep(6)
driver.find_element_by_xpath('//android.widget.TextView[@text=\"通讯录\"]').click()
driver.find_element_by_xpath('//android.widget.TextView[@text=\"公众号\"]').click()
driver.find_element_by_xpath('//android.widget.TextView[@content-desc=\"搜索\"]').click()
driver.find_element_by_id('com.tencent.mm:id/gn').send_keys(u'微医')
driver.find_element_by_xpath('//android.widget.TextView[@text=\"微医集团全流程测试\"]').click()
time.sleep(6)
driver.switch_to.context('WEBVIEW_com.tencent.mm:tools')
print driver.current_context

到这里一切正常,打印显示正常切换到了 WEBVIEW_com.tencent.mm:tools

问题 1 代码:
driver.find_element_by_css_selector('#area_hos_list > div:nth-child(3) > a').click()

该命令如果在 PC 浏览器上执行,能够正常执行点击操作,但在微信中执行时,页面没有任务反应,日志也没有发现错误,见 LOG1:

问题 2 代码:
代码:
driver.find_element_by_id('search_val').send_keys('456') 能够执行
driver.execute_script("$('#search_val').val('134')") 能够执行
driver.execute_script("$('#search_val').trigger('touchstart')") 能够执行
driver.find_element_by_id('search_val').send_keys('456') 不能够执行,报错

执行最后一句的日志如下,一直卡在这里不动了。等待一段时间后报错:Original error: Could not proxy. Proxy error: Could not proxy command to remote server. Original error: Error: ESOCKETTIMEDOUT
详细日志见 LOG2

==========================LOG1=============================
[debug] [AndroidDriver] Available contexts: ["NATIVE_APP","WEBVIEW_com.tencent.mm:tools"]
[debug] [AndroidDriver] Connecting to chrome-backed webview context 'WEBVIEW_com.tencent.mm:tools'
[debug] [AndroidDriver] A port was not given, using random port: 8000
[debug] [Chromedriver] Changed state to 'starting'
[Chromedriver] Set chromedriver binary as: C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules.2.10.0@appium-chromedriver\chromedriver\win\chromedriver.exe
[Chromedriver] Killing any old chromedrivers, running: FOR /F "usebackq tokens=5" %a in (netstat -nao ^| findstr /R /C:"8000 ") do (FOR /F "usebackq" %b in (TASKLIST /FI "PID eq %a" ^| findstr /I chromedriver.exe) do (IF NOT %b=="" TASKKILL /F /PID %a))
[Chromedriver] No old chromedrivers seemed to exist
[Chromedriver] Spawning chromedriver with: C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules.2.10.0@appium-chromedriver\chromedriver\win\chromedriver.exe --url-base=wd/hub --port=8000 --adb-port=5037
[Chromedriver] [STDOUT] Starting ChromeDriver 2.26.436362 (5476ec6bf7ccbada1734a0cdec7d570bb042aa30) on port 8000
Only local connections are allowed.
[debug] [JSONWP Proxy] Proxying [GET /status] to [GET http://127.0.0.1:8000/wd/hub/status] with no body
[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","androidUseRunningApp":true,"androidProcess":"com.tencent.mm:tools","androidDeviceSerial":"ec3097c9"}}}
[debug] [JSONWP Proxy] Got response with status 200: {"sessionId":"0fcc6baf0f2280be4502540a90b87a34","status":0,"value":{"acceptSslCerts":true,"applicationCacheEnabled":false,"browserConnectionEnabled":false,"browserName":"chrome","chrome":{"chromedriverVersion":"2.26.436362 (5476ec6bf7ccbada1734a0cdec7d570bb042aa30)"},"cssSelectorsEnabled":true,"databaseEnabled":false,"handlesAlerts":true,"hasTouchScreen":true,"javascriptEnabled":true,"locationContextEnabled":true,"mobileEmulationEnabled":false,"nativeEvents":true,"pageLoadStrategy":"normal","platform":"ANDROID","rotatable":false,"takesHeapSnapshot":true,"takesScreenshot":true,"unexpectedAlertBehaviour":"","version":"53.0.2785.49","webStorageEnabled":true}}
[debug] [Chromedriver] Changed state to 'online'
[debug] [MJSONWP] Responding to client with driver.setContext() result: null
[HTTP] <-- POST /wd/hub/session/6501ffad-de53-4d9c-8bc1-eeedb75cf15a/context 200 3624 ms - 76
[HTTP] --> GET /wd/hub/session/6501ffad-de53-4d9c-8bc1-eeedb75cf15a/context {}
[debug] [MJSONWP] Calling AppiumDriver.getCurrentContext() with args: ["6501ffad-de53-4d9c-8bc1-eeedb75cf15a"]
[debug] [MJSONWP] Responding to client with driver.getCurrentContext() result: "WEBVIEW_com.tencent.mm:tools"
[HTTP] <-- GET /wd/hub/session/6501ffad-de53-4d9c-8bc1-eeedb75cf15a/context 200 5 ms - 102
[HTTP] --> POST /wd/hub/session/6501ffad-de53-4d9c-8bc1-eeedb75cf15a/element {"using":"css selector","sessionId":"6501ffad-de53-4d9c-8bc1-eeedb75cf15a","value":"#area_hos_list > div:nth-child(3) > a"}
[MJSONWP] Driver proxy active, passing request on via HTTP proxy
[debug] [JSONWP Proxy] Proxying [POST /wd/hub/session/6501ffad-de53-4d9c-8bc1-eeedb75cf15a/element] to [POST http://127.0.0.1:8000/wd/hub/session/0fcc6baf0f2280be4502540a90b87a34/element] with body: {"using":"css selector","sessionId":"6501ffad-de53-4d9c-8bc1-eeedb75cf15a","value":"#area_hos_list > div:nth-child(3) > a"}
[debug] [JSONWP Proxy] Got response with status 200: {"sessionId":"0fcc6baf0f2280be4502540a90b87a34","status":0,"value":{"ELEMENT":"0.30164056734463274-1"}}
[JSONWP Proxy] Replacing sessionId 0fcc6baf0f2280be4502540a90b87a34 with 6501ffad-de53-4d9c-8bc1-eeedb75cf15a
[HTTP] <-- POST /wd/hub/session/6501ffad-de53-4d9c-8bc1-eeedb75cf15a/element 200 352 ms - 107
[HTTP] --> POST /wd/hub/session/6501ffad-de53-4d9c-8bc1-eeedb75cf15a/element/0.30164056734463274-1/click {"sessionId":"6501ffad-de53-4d9c-8bc1-eeedb75cf15a","id":"0.30164056734463274-1"}
[MJSONWP] Driver proxy active, passing request on via HTTP proxy
[debug] [JSONWP Proxy] Proxying [POST /wd/hub/session/6501ffad-de53-4d9c-8bc1-eeedb75cf15a/element/0.30164056734463274-1/click] to [POST http://127.0.0.1:8000/wd/hub/session/0fcc6baf0f2280be4502540a90b87a34/element/0.30164056734463274-1/click] with body: {"sessionId":"6501ffad-de53-4d9c-8bc1-eeedb75cf15a","id":"0.30164056734463274-1"}
[debug] [JSONWP Proxy] Got response with status 200: {"sessionId":"0fcc6baf0f2280be4502540a90b87a34","status":0,"value":null}

[JSONWP Proxy] Replacing sessionId 0fcc6baf0f2280be4502540a90b87a34 with 6501ffad-de53-4d9c-8bc1-eeedb75cf15a
[HTTP] <-- POST /wd/hub/session/6501ffad-de53-4d9c-8bc1-eeedb75cf15a/element/0.30164056734463274-1/click 200 667 ms - 76
[BaseDriver] Shutting down because we waited 60 seconds for a command
[debug] [AndroidDriver] Shutting down Android driver

==========================LOG2=============================
[debug] [MJSONWP] Responding to client with driver.getCurrentContext() result: "WEBVIEW_com.tencent.mm:tools"
[HTTP] <-- GET /wd/hub/session/ea968a23-10cc-4187-bba1-91979a76a661/context 200 2 ms - 102
[HTTP] --> POST /wd/hub/session/ea968a23-10cc-4187-bba1-91979a76a661/element {"using":"id","sessionId":"ea968a23-10cc-4187-bba1-91979a76a661","value":"search_val"}
[MJSONWP] Driver proxy active, passing request on via HTTP proxy
[debug] [JSONWP Proxy] Proxying [POST /wd/hub/session/ea968a23-10cc-4187-bba1-91979a76a661/element] to [POST http://127.0.0.1:8000/wd/hub/session/052bbafb8738cfd4505394d1a9633daf/element] with body: {"using":"id","sessionId":"ea968a23-10cc-4187-bba1-91979a76a661","value":"search_val"}
[debug] [JSONWP Proxy] Got response with status 200: {"sessionId":"052bbafb8738cfd4505394d1a9633daf","status":0,"value":{"ELEMENT":"0.3256719186734802-1"}}
[JSONWP Proxy] Replacing sessionId 052bbafb8738cfd4505394d1a9633daf with ea968a23-10cc-4187-bba1-91979a76a661
[HTTP] <-- POST /wd/hub/session/ea968a23-10cc-4187-bba1-91979a76a661/element 200 296 ms - 106
[HTTP] --> POST /wd/hub/session/ea968a23-10cc-4187-bba1-91979a76a661/element/0.3256719186734802-1/value {"sessionId":"ea968a23-10cc-4187-bba1-91979a76a661","id":"0.3256719186734802-1","value":["4","5","6"]}
[MJSONWP] Driver proxy active, passing request on via HTTP proxy
[debug] [JSONWP Proxy] Proxying [POST /wd/hub/session/ea968a23-10cc-4187-bba1-91979a76a661/element/0.3256719186734802-1/value] to [POST http://127.0.0.1:8000/wd/hub/session/052bbafb8738cfd4505394d1a9633daf/element/0.3256719186734802-1/value] with body: {"sessionId":"ea968a23-10cc-4187-bba1-91979a76a661","id":"0.3256719186734802-1","value":["4","5","6"]}
[debug] [JSONWP Proxy] Got response with status 200: {"sessionId":"052bbafb8738cfd4505394d1a9633daf","status":0,"value":null}
[JSONWP Proxy] Replacing sessionId 052bbafb8738cfd4505394d1a9633daf with ea968a23-10cc-4187-bba1-91979a76a661
[HTTP] <-- POST /wd/hub/session/ea968a23-10cc-4187-bba1-91979a76a661/element/0.3256719186734802-1/value 200 524 ms - 76
[HTTP] --> POST /wd/hub/session/ea968a23-10cc-4187-bba1-91979a76a661/execute {"sessionId":"ea968a23-10cc-4187-bba1-91979a76a661","args":[],"script":"$('#search_val').val('134')"}
[MJSONWP] Driver proxy active, passing request on via HTTP proxy
[debug] [JSONWP Proxy] Proxying [POST /wd/hub/session/ea968a23-10cc-4187-bba1-91979a76a661/execute] to [POST http://127.0.0.1:8000/wd/hub/session/052bbafb8738cfd4505394d1a9633daf/execute] with body: {"sessionId":"ea968a23-10cc-4187-bba1-91979a76a661","args":[],"script":"$('#search_val').val('134')"}
[debug] [JSONWP Proxy] Got response with status 200: {"sessionId":"052bbafb8738cfd4505394d1a9633daf","status":0,"value":null}
[JSONWP Proxy] Replacing sessionId 052bbafb8738cfd4505394d1a9633daf with ea968a23-10cc-4187-bba1-91979a76a661
[HTTP] <-- POST /wd/hub/session/ea968a23-10cc-4187-bba1-91979a76a661/execute 200 96 ms - 76
[HTTP] --> POST /wd/hub/session/ea968a23-10cc-4187-bba1-91979a76a661/execute {"sessionId":"ea968a23-10cc-4187-bba1-91979a76a661","args":[],"script":"$('#search_val').trigger('touchstart')"}
[MJSONWP] Driver proxy active, passing request on via HTTP proxy
[debug] [JSONWP Proxy] Proxying [POST /wd/hub/session/ea968a23-10cc-4187-bba1-91979a76a661/execute] to [POST http://127.0.0.1:8000/wd/hub/session/052bbafb8738cfd4505394d1a9633daf/execute] with body: {"sessionId":"ea968a23-10cc-4187-bba1-91979a76a661","args":[],"script":"$('#search_val').trigger('touchstart')"}
[debug] [JSONWP Proxy] Got response with status 200: {"sessionId":"052bbafb8738cfd4505394d1a9633daf","status":0,"value":null}
[JSONWP Proxy] Replacing sessionId 052bbafb8738cfd4505394d1a9633daf with ea968a23-10cc-4187-bba1-91979a76a661
[HTTP] <-- POST /wd/hub/session/ea968a23-10cc-4187-bba1-91979a76a661/execute 200 115 ms - 76
[HTTP] --> POST /wd/hub/session/ea968a23-10cc-4187-bba1-91979a76a661/element {"using":"id","sessionId":"ea968a23-10cc-4187-bba1-91979a76a661","value":"search_val"}
[MJSONWP] Driver proxy active, passing request on via HTTP proxy
[debug] [JSONWP Proxy] Proxying [POST /wd/hub/session/ea968a23-10cc-4187-bba1-91979a76a661/element] to [POST http://127.0.0.1:8000/wd/hub/session/052bbafb8738cfd4505394d1a9633daf/element] with body: {"using":"id","sessionId":"ea968a23-10cc-4187-bba1-91979a76a661","value":"search_val"}
[MJSONWP] Encountered internal error running command: Error: Could not proxy. Proxy error: Could not proxy command to remote server. Original error: Error: ESOCKETTIMEDOUT
at doJwpProxy$ (../../../lib/mjsonwp/mjsonwp.js:343:13)
at tryCatch (C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules.5.8.24@babel-runtime\regenerator\runtime.js:67:40)
at GeneratorFunctionPrototype.invoke as _invoke
at GeneratorFunctionPrototype.prototype.(anonymous function) as throw
at GeneratorFunctionPrototype.invoke (C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules.5.8.24@babel-runtime\regenerator\runtime.js:136:37)
[HTTP] <-- POST /wd/hub/session/ea968a23-10cc-4187-bba1-91979a76a661/element 500 240047 ms - 281
[Chromedriver] [STDERR] [307.523][SEVERE]: Timed out receiving message from renderer: 299.999

共收到 11 条回复 时间 点赞

哎,没有人碰到这种问题吗?

我遇到的问题是 能操作第一个 webview 界面的元素 click 进入第二个 webview 界面无法操作第二个界面元素 执行 click 一直处于缓冲状态 过 2-3 分钟后 session 报错。。

亲,Appium 1.6.3 咋下载的,官网木有哇

#3 楼 @si509429 我是把之前的卸载掉后,用这条命令安装的:cnpm install -g appium

#2 楼 @xiaoxuxu 和我的问题 2 差不太多,都是页面跳转后就报错了。问题解决了告诉我一下哈

@kgdtkggfqp 你搞定了吗

#6 楼 @xiaoxuxu 没,感觉像是 Appium 的 BUG

#2 楼 @xiaoxuxu 问题解决了么?谢谢~

我也遇到了这个问题,暂时的解决方式是点击跳转到新的页面时 switchto app 然后杀掉 chromedriver 进程 然后 switchto webview 这样新的页面就可以继续操作, 但是执行起来很繁琐,而且一个新的页面要等好几秒才能操作. 你们要是要好的方式的话给我留言.

TD · #10 · 2018年07月19日
仅楼主可见

你好
我使用的 appium 版本 1.8.1 chrome 版本 57 做公众号切换 webview 时候提示 chrome not reachable?这个问题要怎么解决

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册