无法使用本机上下文中的appium切换到webview。

时间:2015-07-06 21:29:03

标签: android python android-webview appium selenium-chromedriver

我一直在尝试从应用程序的本机上下文访问webview,但我无法通过以下错误执行此操作。

WebDriverException:消息:处理命令时发生未知的服务器端错误。 (原始错误:没有从Chromedriver获得会话重定向)

我尝试在Android模拟器上使用appium 1.3.7.2运行我的脚本,其中包括4.4.2,5.1和4.3等多种配置。这三个似乎都没有工作,他们正在抛出同样的错误。

我也调查了https://code.google.com/p/chromedriver/issues/detail?id=845&thanks=845&ts=1404927199并按照了几个步骤,更改了chromedriver二进制文件,但没有运气。

我有多个网络视图,但我不认为这应该是问题。有人可以帮我这个吗?

请查看以下堆栈跟踪:

o:[debug]执行cmd:C:\ Users *** \ AppData \ Local \ Android \ sdk \ platform-tools \ adb.exe -s emulator-5554 shell" ps"

  

info:[debug] WEBVIEW_2767映射到pid 2767   info:[debug]获取webview的进程名称   info:[debug]执行cmd:C:\ Users *** \ AppData \ Local \ Android \ sdk \ platform-tools \ adb.exe -s emulator-5554 shell" ps"   info:[debug] Parsed pid:2767 pkg: *   info:[debug] from:u0_a53,2767,944,800448,111104,ffffffff,b75152d2,S,   info:[debug]返回流程名称:   info:[debug] Parsed pid:2785 pkg:   info:[debug] from:u0_a53,2785,944,593196,52692,ffffffff,b7577355,S,   info:[debug]返回进程名称:   info:[debug]可用的上下文:NATIVE_APP,   info:[debug] [" WEBVIEW_ "" WEBVIEW_ & #34;]   info:[debug]可用的上下文:NATIVE_APP,WEBVIEW_ ,WEBVIEW_   info:[debug]连接到支持chrome的webview   info:[debug]创建Chrome会话   info:[debug]将chromedriver二进制文件设置为:C:\ Program Files(x86)\ Appium \ node_modules \ appium \ build \ chromedriver \ windows \ chromedriver.exe   info:[debug]确保Chromedriver存在   info:[debug]杀死任何旧的chromedrivers,运行:FOR / F" usebackq tokens = 5" (netstat -nao ^| findstr /R /C:"9515 ")中的%a(FOR / F" usebackq"(TASKLIST /FI "PID eq %a" ^| findstr /I chromedriver.exe)中的%b)(IF NOT%b =="" TASKKILL / F / PID%b))   info:[debug]似乎没有旧的chromedrivers存在   info:[debug]产生chromedriver:C:\ Program Files(x86)\ Appium \ node_modules \ appium \ build \ chromedriver \ windows \ chromedriver.exe   info:[debug] [CHROMEDRIVER]在端口9515上启动ChromeDriver(v2.10.289383)   仅允许本地连接。   info:[debug]使用opts发出http请求:{" url":" http://127.0.0.1:9515/wd/hub/session","方法":" POST&# 34;," JSON" {"的sessionId":空," desiredCapabilities" {" chromeOptions" {" androidPackage&# 34;:"的 "" androidUseRunningApp":真," androidDeviceSerial":"模拟器-5554"}}}}   info:[debug]响应客户端并出现错误:{" status":13," value":{" message":"未知服务器 - 处理命令时发生了侧面错误。 (原始错误:没有从Chromedriver获得会话重定向)"," origValue":"没有从Chromedriver"}," sessionId"获得会话重定向:" ac576cc4-fea0-450d-a4bf-f2b5f2ca9dc4"}   info:< - POST / wd / hub / session / ac576cc4-fea0-450d-a4bf-f2b5f2ca9dc4 / context 500 416.371 ms - 280       在Chromedriver.onClose(C:\ Program Files(x86)\ Appium \ node_modules \ appium \ lib \ devices \ android \ chromedriver.js:144:10)       在ChildProcess.EventEmitter.emit(events.js:98:17)       在Process.ChildProcess._handle.onexit(child_process.js:797:12)上下文:[POST / wd / hub / session / ac576cc4-fea0-450d-a4bf-f2b5f2ca9dc4 / context {" sessionId":& #34; ac576cc4-fea0-450d-a4bf-f2b5f2ca9dc4""名称":"网页视图_ * "}]   info:[debug] [CHROMEDRIVER STDERR] [0.008] [SEVERE]:无法将套接字绑定到127.0.0.1:9515   info:[debug] [CHROMEDRIVER]端口不可用。退出...   信息: - > DELETE / wd / hub / session / ac576cc4-fea0-450d-a4bf-f2b5f2ca9dc4 {}   信息:关闭appium会话   info:[debug]按HOME按钮   info:[debug]执行cmd:C:\ Users *** \ AppData \ Local \ Android \ sdk \ platform-tools \ adb.exe -s emulator-5554 shell"输入keyevent 3"   info:[debug] Chromedriver退出代码1   info:[debug]停止logcat捕获   info:[debug] Logcat终止,代码为null,信号为SIGTERM   info:[debug] [BOOTSTRAP] [debug]从客户端获取数据:{" cmd":" shutdown"}   info:[debug] [BOOTSTRAP] [debug]得到SHUTDOWN类型的命令   info:[debug] [BOOTSTRAP] [debug]返回结果:{" status":0," value":" OK,关闭"}   info:[debug] [BOOTSTRAP] [debug]封闭客户端连接   info:[debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:numtests = 1   info:[debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:stream =。   info:[debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:id = UiAutomatorTestRunner   info:[debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:test = testRunServer   info:[debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:class = io.appium.android.bootstrap.Bootstrap   info:[debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:current = 1   info:[debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS_CODE:0   info:[debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS:stream =   info:[debug] [UIAUTOMATOR STDOUT] WatcherResultPrinter =的测试结果。   info:[debug] [UIAUTOMATOR STDOUT]时间:53.474   info:[debug] [UIAUTOMATOR STDOUT] OK(1测试)   info:[debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS_CODE:-1   info:[debug]发送shutdown命令,等待UiAutomator停止...   info:[debug] UiAutomator正常关闭   info:[debug]清理android对象   info:[debug]清理appium会话

1 个答案:

答案 0 :(得分:0)

2012年12月5日。

我希望目前使用AppiumDriver解决此问题,然后使用以下方法将上下文切换到Webview:

Set<String> contextNames = driver.getContextHandles();
for (String contextName : contextNames) {    
System.out.println(contextName); //prints out something like NATIVE_APP, WEBVIEW_com.example.android etc..}
String setContext = contextNames.toArray()[1].toString();
driver.context(setContext);// set context to WEBVIEW_com.example.android

使用css和classname执行操作。使用driver.context(NATIVE_APP);

切换回Native上下文