首页 文章

无法从本机上下文中使用appium切换到webview .

提问于
浏览
1

我一直在尝试从应用程序的本机上下文访问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二进制文件,但没有运气 .

我有多个webview存在,但我不认为这应该是问题 . 有人可以帮我这个吗?

请查看以下堆栈跟踪:

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信息的进程名称:[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”] info:[debug]可用的上下文:NATIVE_APP,WEBVIEW_,WEBVIEW_ info:[debug]连接到chrome支持的webview信息:[调试]创建Chrome会话信息:[debug]将chromedriver二进制文件设置为:C:\ Program Files(x86)\ Appium \ node_modules \ appium \ build \ chromedriver \ windows \ chromedriver.exe info:[debug]确保Chromedriver存在信息:[ debug]杀死任何旧的chromedrivers,运行:FOR / F“usebackq tokens = 5” %a in(netstat -nao ^ | findstr / R / C:“9515”)do(FOR / F“usebackq”%b in(TASKLIST / FI“PID eq%a”^ | findstr / I chromedriver.exe)do(IF NOT%b ==“” TASKKILL / F / PID%b))信息:[debug]没有旧的chromedrivers似乎存在信息:[debug]产生chromedriver:C:\ Program Files(x86)\ Appium \ node_modules \ appium \ build \ chromedriver \ windows \ chromedriver.exe信息:[debug] [CHROMEDRIVER]在端口9515上启动ChromeDriver(v2.10.289383)只允许本地连接 . info:[debug]用opts发出http请求:{“url”:“http://127.0.0.1:9515 / wd / hub / session”,“method”:“POST”,“json”:{“sessionId” :null,“desiredCapabilities”:{“chromeOptions”:{“androidPackage”:“”,“androidUseRunningApp”:true,“androidDeviceSerial”:“emulator-5554”}}}} info:[debug]响应客户端出错: {“status”:13,“value”:{“message”:“处理命令时发生未知的服务器端错误 . (原始错误:未从Chromedriver获取会话重定向)”,“origValue”:“没有从Chromedriver获取会话重定向“},”sessionId“:”ac576cc4-fea0-450d-a4bf-f2b5f2ca9dc4“}信息:< - 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”:“ac576cc4-fea0-450d-a4bf-f2b5f2ca9dc4”,“name”:“WEBVIEW_ *”}] info:[debug] [CHROMEDRIVER STDERR] [0.008] [SEVERE]:无法将套接字绑定到127.0.0.1 :9515 info:[debug] [CHROMEDRIVER]端口不可用 . 退出...信息: - > DELETE / wd / hub / session / ac576cc4-fea0-450d-a4bf-f2b5f2ca9dc4 {} info:关闭appium会话信息:[debug]按HOME按钮信息:[debug]执行cmd :C:\ Users *** \ AppData \ Local \ Android \ sdk \ platform-tools \ adb.exe -s emulator-5554 shell“input keyevent 3”info:[debug] Chromedriver退出,代码为1 info:[debug]停止logcat捕获信息:[debug] Logcat终止,代码为null,信号SIGTERM信息:[debug] [BOOTSTRAP] [debug]从客户端获取数据:{“cmd”:“shutdown”} info:[debug] [BOOTSTRAP] [ debug]得到类型SHUTDOWN的命令信息:[debug] [BOOTSTRAP] [debug]返回结果:{“status”:0,“value”:“OK,关闭”} info:[debug] [BOOTSTRAP] [debug]封闭客户端连接信息:[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停止...信息:[调试] UiAutomator正常关闭信息:[debug]清理android对象信息:[debug]清理appium会话

1 回答

  • 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上下文

相关问题