【问题标题】:"Unable to start a WebDriver session." error when using appium and protractor“无法启动 WebDriver 会话。”使用appium和量角器时出错
【发布时间】:2026-01-18 23:25:01
【问题描述】:

使用 Appium 和 Protractor 启动 WebdriverIO 会话时,我收到一条错误消息“无法启动 WebDriver 会话”。 以前,这个错误没有发生,突然它开始发生了。这是控制台日志和我的配置文件。任何帮助将不胜感激

版本:
量角器 - 5.1.2(最新)
节点 - 7.9.0
Appium -1.6.5

(node:27770) DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
[14:57:35] I/launcher - Running 1 instances of WebDriver
[14:57:35] I/hosted - Using the selenium server at http://localhost:4723/wd/hub
[14:57:58] E/runner - Unable to start a WebDriver session.
[14:58:04] E/launcher - Error: WebDriverError: no such session
  (Driver info: chromedriver=2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4),platform=Mac OS X 10.12.4 x86_64)
    at Object.checkLegacyResponse (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:505:15)
    at parseHttpResponse (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/http.js:509:13)
    at doSend.then.response (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/http.js:440:13)
    at process._tickCallback (internal/process/next_tick.js:109:7)
From: Task: WebDriver.manage().timeouts().setScriptTimeout(11000)
    at WebDriver.schedule (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver.js:816:17)
    at Timeouts._scheduleCommand (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver.js:1500:25)
    at Timeouts.setScriptTimeout (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver.js:1483:17)
    at browser_.ready.browser_.ready.then.then (/usr/local/lib/node_modules/protractor/lib/runner.ts:281:49)
    at ManagedPromise.invokeCallback_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:1366:14)
    at TaskQueue.execute_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2970:14)
    at TaskQueue.executeNext_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2953:27)
    at asyncRun (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2813:27)
    at /usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:676:7
    at process._tickCallback (internal/process/next_tick.js:109:7)

另外请找到 conf.js 文件

'use strict'; 
var log4js = require('log4js');
var fs = require('fs');

exports.config = {

    capabilities: {
        browserName: '',
        platformName: 'Android',
        platformVersion: '6.0',
        deviceName: 'Moto',
        autoWebview: true,

        // change this path to the absolute path of the app
        app: '/Users/abhishek/abhishek-test-volunteeringMobileApp/android-debug.apk'
    },

    // baseUrl: browser.params.baseUrl,
    baseUrl: 'file:///android_asset/www/index.html',

    //restartBrowserBetweenTests: true,
    // Framework to use. Jasmine is recommended.
    framework: 'jasmine',

    // Spec patterns are relative to the current working directory when
    // protractor is called.

    specs: ['Specs/LoginSpec.js'],

    seleniumAddress: 'http://localhost:4723/wd/hub',
    

    // Options to be passed to Jasmine.
    jasmineNodeOpts: {
        defaultTimeoutInterval: 90000,
        showColors: true
            // allScriptsTimeout: 50000
    },

    
    onPrepare: function() {

        // implicit and page load timeouts
        browser.manage().timeouts().pageLoadTimeout(40000);
        browser.manage().timeouts().implicitlyWait(25000);

        // for non-angular page
        // browser.ignoreSynchronization = true;
        var Jasmine2HtmlReporter = require('protractor-jasmine2-html-reporter');
        jasmine.getEnv().addReporter(
            new Jasmine2HtmlReporter({
                captureOnlyFailedSpecs: true,
                savePath: './Web_Automation_Summary',
                takeScreenShotsOnlyForFailedSpecs: true,
                cleanDestination: true,
                fileName: 'Automation_Report'
            })
        );

        var wd = require('wd'),
            protractor = require('protractor'),
            wdBridge = require('wd-bridge')(protractor, wd);
        wdBridge.initFromProtractor(exports.config);
    }

}

Appium 日志:


[HTTP] --> POST /wd/hub/session
{"desiredCapabilities":{"browserName":"","platformName":"Android","platformVersion":"6.0","deviceName":"Moto","autoWebview":true,"app":"/Users/nextgen/nextgen-test-volunteeringMobileApp/android-debug.apk","count":1}}
[MJSONWP] Calling AppiumDriver.createSession() with args:
[{"browserName":"","platfor... [Appium] Creating new AndroidDriver
session [Appium] Capabilities: [Appium]   browserName: '' [Appium]  
platformName: 'Android' [Appium]   platformVersion: '6.0' [Appium]  
deviceName: 'Moto' [Appium]   autoWebview: true [Appium]   app:
'/Users/nextgen/nextgen-test-volunteeringMobileApp/android-debug.apk'
[Appium]   count: 1 [BaseDriver] The following capabilities were
provided, but are not recognized by appium: count. [BaseDriver]
Session created with session id: f25d0074-31d2-4c3e-9d37-784be5827545
[debug] [AndroidDriver] Getting Java version [AndroidDriver] Java
version is: 1.8.0_131 [ADB] Checking whether adb is present [ADB]
Using adb from
/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/android-sdk_r24.4.1/platform-tools/adb
manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:185:17)
    at F (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/core-js/library/modules/$.export.js:30:36)
    at AsyncIterator.enqueue (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:184:12)
    at AsyncIterator.prototype.(anonymous function) [as next] (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at Object.runtime.async (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:209:12)
    at UiAutomator.killUiAutomatorOnDevice (lib/uiautomator.js:88:33)
    at UiAutomator.start$ (lib/uiautomator.js:29:18)
    at tryCatch (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
    at GeneratorFunctionPrototype.invoke [as _invoke] (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as next]
(/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at GeneratorFunctionPrototype.invoke (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
    at process._tickCallback (internal/process/next_tick.js:109:7)  Error: Unable to get pids for uiautomator. Orginial error:
this.shell(...).trim is not a function
    at Object.wrappedLogger.errorAndThrow (lib/logger.js:60:13)
    at ADB.callee$0$0$ (lib/tools/adb-commands.js:441:9)
    at tryCatch (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
    at GeneratorFunctionPrototype.invoke [as _invoke] (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as next]
(/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at invoke (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
    at enqueueResult (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:185:17)
    at F (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/core-js/library/modules/$.export.js:30:36)
    at AsyncIterator.enqueue (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:184:12)
    at AsyncIterator.prototype.(anonymous function) [as next] (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at Object.runtime.async (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:209:12)
    at ADB.callee$0$0 [as getPIDsByName] (lib/tools/adb-commands.js:431:18)
    at ADB.callee$0$0$ (lib/tools/adb-commands.js:448:27)
    at tryCatch (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
    at GeneratorFunctionPrototype.invoke [as _invoke] (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as next]
(/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at invoke (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
    at enqueueResult (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:185:17)
    at F (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/core-js/library/modules/$.export.js:30:36)
    at AsyncIterator.enqueue (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:184:12)
    at AsyncIterator.prototype.(anonymous function) [as next] (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at Object.runtime.async (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:209:12)
    at ADB.callee$0$0 [as killProcessesByName] (lib/tools/adb-commands.js:453:17)
    at UiAutomator.killUiAutomatorOnDevice$ (lib/uiautomator.js:90:22)
    at tryCatch (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
    at GeneratorFunctionPrototype.invoke [as _invoke] (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as next]
(/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at invoke (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
    at enqueueResult (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:185:17)
    at F (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/core-js/library/modules/$.export.js:30:36)
    at AsyncIterator.enqueue (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:184:12)
    at AsyncIterator.prototype.(anonymous function) [as next] (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at Object.runtime.async (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:209:12)
    at UiAutomator.killUiAutomatorOnDevice (lib/uiautomator.js:88:33)
    at UiAutomator.start$ (lib/uiautomator.js:29:18)
    at tryCatch (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
    at GeneratorFunctionPrototype.invoke [as _invoke] (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as next]
(/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at GeneratorFunctionPrototype.invoke (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
    at process._tickCallback (internal/process/next_tick.js:109:7) [ADB] Error: Unable to kill uiautomator processes. Original error:
Unable to get pids for uiautomator. Orginial error:
this.shell(...).trim is not a function
    at Object.wrappedLogger.errorAndThrow (lib/logger.js:60:13)
    at ADB.callee$0$0$ (lib/tools/adb-commands.js:457:9)
    at tryCatch (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
    at GeneratorFunctionPrototype.invoke [as _invoke] (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as throw]
(/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at GeneratorFunctionPrototype.invoke (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
    at process._tickCallback (internal/process/next_tick.js:109:7)  Error: Unable to kill uiautomator processes. Original error: Unable to
get pids for uiautomator. Orginial error: this.shell(...).trim is not
a function
    at Object.wrappedLogger.errorAndThrow (lib/logger.js:60:13)
    at ADB.callee$0$0$ (lib/tools/adb-commands.js:457:9)
    at tryCatch (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
    at GeneratorFunctionPrototype.invoke [as _invoke] (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as throw]
(/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at GeneratorFunctionPrototype.invoke (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
    at process._tickCallback (internal/process/next_tick.js:109:7) [UiAutomator] Error while killing uiAutomator: Error: Unable to kill
uiautomator processes. Original error: Unable to get pids for
uiautomator. Orginial error: this.shell(...).trim is not a function
[debug] [UiAutomator] Starting UIAutomator [debug] [ADB] Creating ADB
subprocess with args: -P, 5037, -s, HNB1DB0V, shell, uiautomator,
runtest, AppiumBootstrap.jar, -c,
io.appium.android.bootstrap.Bootstrap, -e, pkg,
com.volunteering.mobile, -e, disableAndroidWatchers, false, -e,
acceptSslCerts, false [debug] [ADB] 1 device(s) connected [debug]
[ADB] Running
'/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/android-sdk_r24.4.1/platform-tools/adb'
with args: ["-P",5037,"-s","HNB1DB0V","shell","ps"] [debug]
[UiAutomator] Moving to state 'online' [AndroidBootstrap] [BOOTSTRAP
LOG] [debug] json loading complete. [AndroidBootstrap] Android
bootstrap socket is now connected [debug] [ADB] Device API level: 23
[debug] [ADB] Getting connected devices... [AndroidBootstrap]
[BOOTSTRAP LOG] [debug] Registered crash watchers. [AndroidBootstrap]
[BOOTSTRAP LOG] [debug] Client connected [debug] [ADB] 1 device(s)
connected [debug] [ADB] Running
'/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/android-sdk_r24.4.1/platform-tools/adb'
with args:
["-P",5037,"-s","HNB1DB0V","shell","am","start","-W","-n","com.volunteering.mobile/com.volunteering.mobile.MainActivity","-S","-a","android.intent.action.MAIN","-c","android.intent.category.LAUNCHER","-f","0x10200000"]
[debug] [ADB] Waiting for pkg: 'com.volunteering.mobile' and activity:
'com.volunteering.mobile.MainActivity' to be focused [debug] [ADB]
Possible activities, to be checked:
com.volunteering.mobile.MainActivity, .MainActivity,
.com.volunteering.mobile.MainActivity [debug] [ADB] Getting focused
package and activity [debug] [ADB] Getting connected devices...
[debug] [ADB] 1 device(s) connected [debug] [ADB] Running
'/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/android-sdk_r24.4.1/platform-tools/adb'
with args:
["-P",5037,"-s","HNB1DB0V","shell","dumpsys","window","windows"]
[debug] [ADB] Found package: 'com.volunteering.mobile' and activity:
'.MainActivity' [AndroidDriver] Setting auto webview to context
'WEBVIEW_com.volunteering.mobile' with timeout 2000ms [debug]
[AndroidDriver] Getting a list of available webviews [debug] [ADB]
Getting connected devices... [debug] [ADB] 1 device(s) connected
[debug] [ADB] Running
'/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/android-sdk_r24.4.1/platform-tools/adb'
with args: ["-P",5037,"-s","HNB1DB0V","shell","cat","/proc/net/unix"]
[debug] [AndroidDriver] WEBVIEW_19960 mapped to pid 19960 [debug]
[AndroidDriver] Getting process name for webview [debug] [ADB] Getting
connected devices... [debug] [ADB] 1 device(s) connected [debug] [ADB]
Running
'/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/android-sdk_r24.4.1/platform-tools/adb'
with args: ["-P",5037,"-s","HNB1DB0V","shell","ps"] [debug]
[AndroidDriver] Parsed pid: 19960 pkg: com.volunteering.mobile!
[debug] [AndroidDriver] from:
u0_a106,19960,299,1071528,105984,00000000,R,com.volunteering.mobile
[debug] [AndroidDriver] returning process name:
com.volunteering.mobile [debug] [AndroidDriver] Found webviews:
["WEBVIEW_com.volunteering.mobile"] [debug] [AndroidDriver] Available
contexts: ["NATIVE_APP","WEBVIEW_com.volunteering.mobile"] [debug]
[AndroidDriver] Connecting to chrome-backed webview context
'WEBVIEW_com.volunteering.mobile' [debug] [AndroidDriver] A port was
not given, using random port: 8000 [debug] [Chromedriver] Changed
state to 'starting' [Chromedriver] Set chromedriver binary as:
/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/appium-chromedriver/chromedriver/mac/chromedriver
[Chromedriver] Killing any old chromedrivers, running: pkill -15 -f
"/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/appium-chromedriver/chromedriver/mac/chromedriver.*--port=8000"
[Chromedriver] No old chromedrivers seemed to exist [Chromedriver]
Spawning chromedriver with:
/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/appium-chromedriver/chromedriver/mac/chromedriver
--url-base=wd/hub --port=8000 --adb-port=5037 [Chromedriver] [STDOUT] Starting ChromeDriver 2.21.371459
(36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4) on port 8000 Only local
connections are allowed. [JSONWP Proxy] Proxying [GET /status] to [GET
http://127.0.0.1:8000/wd/hub/status] with no body [Chromedriver]
[STDERR] [warn] kq_init: detected broken kqueue; not using.: Undefined
error: 0 [JSONWP Proxy] Got response with status 200:
"{\"sessionId\":\"\",\"stat... [JSONWP Proxy] Proxying [POST /session]
to [POST http://127.0.0.1:8000/wd/hub/session] with body:
{"desiredCapabilities":{"ch... [JSONWP Proxy] Got response with status
200: {"sessionId":"34eab4b4916a3... [debug] [Chromedriver] Changed
state to 'online' [Appium] New AndroidDriver session created
successfully, session f25d0074-31d2-4c3e-9d37-784be5827545 added to
master session list [MJSONWP] Responding to client with
driver.createSession() result: {"platform":"LINUX","webSto... [HTTP]
<-- POST /wd/hub/session 200 22185 ms - 881  [HTTP] --> POST
/wd/hub/session/f25d0074-31d2-4c3e-9d37-784be5827545/timeouts
{"type":"script","ms":11000} [MJSONWP] Driver proxy active, passing
request on via HTTP proxy [JSONWP Proxy] Proxying [POST
/wd/hub/session/f25d0074-31d2-4c3e-9d37-784be5827545/timeouts] to
[POST
http://127.0.0.1:8000/wd/hub/session/34eab4b4916a3eb08d701143c90c669c/timeouts] with body: {"type":"script","ms":11000} [JSONWP Proxy] Got response
with status 200: {"sessionId":"34eab4b4916a3... [JSONWP Proxy]
Replacing sessionId 34eab4b4916a3eb08d701143c90c669c with
f25d0074-31d2-4c3e-9d37-784be5827545 [HTTP] <-- POST
/wd/hub/session/f25d0074-31d2-4c3e-9d37-784be5827545/timeouts 200 9 ms
- 220  [HTTP] --DELETE /wd/hub/session/f25d0074-31d2-4c3e-9d37-784be5827545 {} [MJSONWP]
Calling AppiumDriver.deleteSession() with args:
["f25d0074-31d2-4c3e-9d37-7... [debug] [AndroidDriver] Shutting down
Android driver [debug] [AndroidDriver] Stopping chromedriver for
context WEBVIEW_com.volunteering.mobile [debug] [Chromedriver] Changed
state to 'stopping' [JSONWP Proxy] Proxying [DELETE /] to [DELETE
http://127.0.0.1:8000/wd/hub/session/34eab4b4916a3eb08d701143c90c669c]
with no body [JSONWP Proxy] Got response with status 200:
"{\"sessionId\":\"34eab4b49... [debug] [Chromedriver] Changed state to
'stopped' [debug] [ADB] Getting connected devices... [debug] [ADB] 1
device(s) connected [debug] [ADB] Running
'/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/android-sdk_r24.4.1/platform-tools/adb'
with args:
["-P",5037,"-s","HNB1DB0V","shell","am","force-stop","com.volunteering.mobile"]
[debug] [ADB] Pressing the HOME button [debug] [ADB] Getting connected
devices... [debug] [ADB] 1 device(s) connected [debug] [ADB] Running
'/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/android-sdk_r24.4.1/platform-tools/adb'
with args: ["-P",5037,"-s","HNB1DB0V","shell","input","keyevent",3]
[debug] [AndroidBootstrap] Sending command to android:
{"cmd":"shutdown"} [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got data
from client: {"cmd":"shutdown"} [AndroidBootstrap] [BOOTSTRAP LOG]
[debug] Got command of type SHUTDOWN [AndroidBootstrap] [BOOTSTRAP
LOG] [debug] Returning result: {"status":0,"value":"OK, shutting
down"} [debug] [AndroidBootstrap] [UIAUTO STDOUT] close
[socket][/127.0.0.1:4724] [AndroidBootstrap] [BOOTSTRAP LOG] [debug]
Closed client connection [debug] [AndroidBootstrap] [UIAUTO STDOUT]
INSTRUMENTATION_STATUS: numtests=1 [debug] [AndroidBootstrap] [UIAUTO
STDOUT] INSTRUMENTATION_STATUS: stream=. [debug] [AndroidBootstrap]
[UIAUTO STDOUT] INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner
[debug] [AndroidBootstrap] [UIAUTO STDOUT] INSTRUMENTATION_STATUS:
test=testRunServer [debug] [AndroidBootstrap] [UIAUTO STDOUT]
INSTRUMENTATION_STATUS: class=io.appium.android.bootstrap.Bootstrap
[debug] [AndroidBootstrap] [UIAUTO STDOUT] INSTRUMENTATION_STATUS:
current=1 [debug] [AndroidBootstrap] [UIAUTO STDOUT]
INSTRUMENTATION_STATUS_CODE: 0 [debug] [AndroidBootstrap] [UIAUTO
STDOUT] INSTRUMENTATION_STATUS: stream= [debug] [AndroidBootstrap]
[UIAUTO STDOUT] Test results for WatcherResultPrinter=. [debug]
[AndroidBootstrap] [UIAUTO STDOUT] Time: 11.931 [debug]
[AndroidBootstrap] [UIAUTO STDOUT] OK (1 test) [debug]
[AndroidBootstrap] [UIAUTO STDOUT] INSTRUMENTATION_STATUS_CODE: -1
[debug] [AndroidBootstrap] Received command result from bootstrap
[debug] [UiAutomator] Shutting down UiAutomator [debug] [UiAutomator]
Moving to state 'stopping' [debug] [UiAutomator] UiAutomator shut down
normally [debug] [UiAutomator] Moving to state 'stopped' [debug] [ADB]
Attempting to kill all uiautomator processes [debug] [ADB] Getting all
processes with uiautomator [debug] [ADB] Getting connected devices...
[ADB] Error: Unable to get pids for uiautomator. Orginial error:
this.shell(...).trim is not a function
    at Object.wrappedLogger.errorAndThrow (lib/logger.js:60:13)
    at ADB.callee$0$0$ (lib/tools/adb-commands.js:441:9)
    at tryCatch (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
    at GeneratorFunctionPrototype.invoke [as _invoke] (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as next]
(/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
    at invoke (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
    at enqueueResult (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:185:17)
    at F (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/core-js/library/modules/$.export.js:30:36)
    at AsyncIterator.enqueue (/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:184:12)

【问题讨论】:

  • 你能不能也贴一下你的Appium日志,你现在提供的日志只是来自Protractor。 Appium 可能会告诉我们更多关于您无法启动 webdriver 会话的原因。
  • 高速公路 @wswebcreation 添加了 appium 日志...

标签: javascript selenium-webdriver protractor appium


【解决方案1】:

花了我一些时间,但我认为这是在这部分

[AndroidDriver] returning process name: com.volunteering.mobile [debug]
[AndroidDriver] Found webviews: ["WEBVIEW_com.volunteering.mobile"] [debug]
[AndroidDriver] Available contexts: ["NATIVE_APP","WEBVIEW_com.volunteering.mobile"] [debug]
[AndroidDriver] Connecting to chrome-backed webview context 'WEBVIEW_com.volunteering.mobile' [debug]
[AndroidDriver] A port was not given, using random port: 8000 [debug]
[Chromedriver] Changed state to 'starting' 
[Chromedriver] Set chromedriver binary as: /usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/appium-chromedriver/chromedriver/mac/chromedriver 
[Chromedriver] Killing any old chromedrivers, running: pkill -15 -f "/usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/appium-chromedriver/chromedriver/mac/chromedriver.*--port=8000" 
[Chromedriver] No old chromedrivers seemed to exist 
[Chromedriver] Spawning chromedriver with: /usr/local/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/appium-1.6.0/node_modules/appium/node_modules/appium-chromedriver/chromedriver/mac/chromedriver --url-base=wd/hub --port=8000 --adb-port=5037 
[Chromedriver] [STDOUT] Starting ChromeDriver 2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4) on port 8000 Only local connections are allowed. 
[JSONWP Proxy] Proxying [GET /status] to [GET http://127.0.0.1:8000/wd/hub/status] with no body 
[Chromedriver] [STDERR] [warn] kq_init: detected broken kqueue; not using.: Undefined error: 0 
[JSONWP Proxy] Got response with status 200: "{\"sessionId\":\"\",\"stat... 
[JSONWP Proxy] Proxying [POST /session] to [POST http://127.0.0.1:8000/wd/hub/session] with body: {"desiredCapabilities":{"ch... 
[JSONWP Proxy] Got response with status 200: {"sessionId":"34eab4b4916a3... [debug] 
[Chromedriver] Changed state to 'online' [Appium] New AndroidDriver session created successfully, session f25d0074-31d2-4c3e-9d37-784be5827545 added to master session list [MJSONWP] Responding to client with driver.createSession() result: {"platform":"LINUX","webSto... 
[HTTP] <-- POST /wd/hub/session 200 22185 ms - 881 
[HTTP] --> POST /wd/hub/session/f25d0074-31d2-4c3e-9d37-784be5827545/timeouts {"type":"script","ms":11000} [MJSONWP] Driver proxy active, passing request on via HTTP proxy 
[JSONWP Proxy] Proxying [POST /wd/hub/session/f25d0074-31d2-4c3e-9d37-784be5827545/timeouts] to [POST http://127.0.0.1:8000/wd/hub/session/34eab4b4916a3eb08d701143c90c669c/timeouts] with body: {"type":"script","ms":11000} 
[JSONWP Proxy] Got response with status 200: {"sessionId":"34eab4b4916a3... 
[JSONWP Proxy] Replacing sessionId 34eab4b4916a3eb08d701143c90c669c with f25d0074-31d2-4c3e-9d37-784be5827545 
[HTTP] <-- POST /wd/hub/session/f25d0074-31d2-4c3e-9d37-784be5827545/timeouts 200 9 ms - 220 
[HTTP] --> DELETE /wd/hub/session/f25d0074-31d2-4c3e-9d37-784be5827545 {} [MJSONWP] Calling AppiumDriver.deleteSession() with args: ["f25d0074-31d2-4c3e-9d37-7... [debug]
[AndroidDriver] Shutting down Android driver [debug]
[AndroidDriver] Stopping chromedriver for context WEBVIEW_com.volunteering.mobile [debug] 
[Chromedriver] Changed state to 'stopping' 
[JSONWP Proxy] Proxying [DELETE /] to [DELETE http://127.0.0.1:8000/wd/hub/session/34eab4b4916a3eb08d701143c90c669c] with no body

我认为您需要升级日志记录的级别才能了解它为什么真的失败了。我想这与切换到 webview (并且 webview 不存在)和设置异步超时有关,就像在这一行 [JSONWP Proxy] Proxying [POST /wd/hub/session/f25d0074-31d2-4c3e-9d37-784be5827545/timeouts] to [POST http://127.0.0.1:8000/wd/hub/session/34eab4b4916a3eb08d701143c90c669c/timeouts] with body: {"type":"script","ms":11000} 中一样,因为在那之后它就失败了。

【讨论】: