Skip to content
This repository was archived by the owner on Jul 29, 2024. It is now read-only.

Protractor 1.1.0: IE fails with "Unable to get browser" error on start #1223

Closed
mitchhentges opened this issue Aug 21, 2014 · 30 comments
Closed

Comments

@mitchhentges
Copy link

After updating to Protractor 1.1.0, IE will no longer start.
The config file that I am using is:

exports.config = {

    seleniumPort: 4444,
    seleniumArgs: [],

    specs: [
        '../spec-e2e/**/*.spec.js'
    ],

    chromeOnly: false,
    multiCapabilities: [
        /*{
            'browserName': 'chrome'
        },
        {
            'browserName': 'firefox'
        },*/
        {
            'browserName': 'internet explorer'
        }
    ],

    suites: {
        testing:        '../spec-e2e/roles.spec.js'
    },

    baseUrl: 'http://localhost:8000',

    onPrepare: function() {
        browser.get("/#/login");
    },

    allScriptsTimeout: 500000,
    jasmineNodeOpts: {
        onComplete: null,
        isVerbose: true,
        showColors: true,
        includeStackTrace: true,
        defaultTimeoutInterval: 1000000
    }
};

Running protractor with IE as a browser causes the following output:

Starting selenium standalone server...
Selenium standalone server started at http://10.1.1.111:4444/wd/hub

C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\error.js:109
  var template = new Error(this.message);
                 ^
NoSuchWindowError: Unable to get browser (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:03'
System info: host: 'ARROW005175', ip: '10.1.1.111', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_65'
Session ID: f0413653-cb02-4961-a56d-332bcafed444
Driver info: org.openqa.selenium.ie.InternetExplorerDriver
Capabilities [{platform=WINDOWS, javascriptEnabled=true, elementScrollBehavior=0, ignoreZoomSetting=false, enablePersistentHover=true, ie.ensureCleanSession=false, browserName=internet explorer, enableElementCacheCleanup=true, unexpectedAlertBehaviour=dismiss, version=11, ie.usePerProcessProxy=false, cssSelectorsEnabled=true, ignoreProtectedModeSettings=false, requireWindowFocus=false, handlesAlerts=true, initialBrowserUrl=http://localhost:27189/, ie.forceCreateProcessApi=false, nativeEvents=true, browserAttachTimeout=0, ie.browserCommandLineSwitches=, takesScreenshot=true}]
    at new bot.Error (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\error.js:109:18)
    at Object.bot.response.checkResponse (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\response.js:106:9)
    at C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:277:20
    at C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\base.js:1243:15
    at webdriver.promise.ControlFlow.runInNewFrame_ (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1539:20)
    at notify (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:362:12)
    at notifyAll (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:331:7)
    at resolve (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:309:7)
    at fulfill (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:429:5)
    at C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1406:10
    at C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\base.js:1243:15
    at webdriver.promise.ControlFlow.runInNewFrame_ (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1539:20)
    at notify (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:362:12)
    at notifyAll (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:331:7)
    at resolve (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:309:7)
    at fulfill (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:429:5)
    at C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\base.js:1243:15
    at webdriver.promise.ControlFlow.runInNewFrame_ (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1539:20)
    at notify (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:362:12)
    at notifyAll (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:331:7)
    at resolve (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:309:7)
    at fulfill (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:429:5)
    at C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:617:49
    at C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\http\http.js:96:5
    at IncomingMessage.<anonymous> (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\http\index.js:122:7)
    at IncomingMessage.EventEmitter.emit (events.js:117:20)
    at _stream_readable.js:920:16
    at process._tickCallback (node.js:415:13)
==== async task ====
WebDriver.executeScript()
    at webdriver.WebDriver.schedule (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:268:15)
    at webdriver.WebDriver.executeScript (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:404:15)
    at C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\lib\protractor.js:1034:24
    at webdriver.promise.ControlFlow.runInNewFrame_ (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1539:20)
    at pollCondition [as _onTimeout] (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1305:12)
    at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
==== async task ====
Timed out waiting for page to load after 10000ms
    at webdriver.promise.ControlFlow.wait (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1296:15)
    at webdriver.WebDriver.wait (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:543:21)
    at Protractor.get (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\lib\protractor.js:1033:15)
    at get (C:\Users\mhentges\Documents\Navistream\webclient\spec-e2e\app\app\LoginPage.po.js:7:17)
    at exports.config.onPrepare (C:\Users\mhentges\Documents\Navistream\webclient\config\spec-e2e.js:97:14)
    at Runner.runFilenamesOrFns_ (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\lib\runner.js:68:20)
    at Runner.runTestPreparers (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\lib\runner.js:101:15)
    at Object.exports.run (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\lib\frameworks\jasmine.js:38:10)
    at driverprovider_.setupEnv.then.then.then.testResult (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\lib\runner.js:266:28)
    at _fulfilled (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\q\q.js:797:54)
    at self.promiseDispatch.done (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\q\q.js:826:30)
    at Promise.promise.promiseDispatch (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\q\q.js:759:13)
    at C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\q\q.js:573:44
    at flush (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\q\q.js:108:17)
    at process._tickCallback (node.js:415:13)

The webdriver executable also provides a whole lot of information:

seleniumProcess.pid: 4768
Aug 22, 2014 8:22:55 AM org.openqa.grid.selenium.GridLauncher main
INFO: Launching a standalone server
Setting system property webdriver.chrome.driver to C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\selenium\chromedriver.exe
Setting system property webdriver.ie.driver to C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\selenium\IEDriverServer.exe
08:22:55.255 INFO - Java: Oracle Corporation 24.65-b04
08:22:55.255 INFO - OS: Windows 7 6.1 amd64
08:22:55.265 INFO - v2.42.2, with Core v2.42.2. Built from revision 6a6995d
08:22:55.355 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub
08:22:55.355 INFO - Version Jetty/5.1.x
08:22:55.355 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
08:22:55.355 INFO - Started HttpContext[/selenium-server,/selenium-server]
08:22:55.355 INFO - Started HttpContext[/,/]
08:22:55.425 INFO - Started org.openqa.jetty.jetty.servlet.ServletHandler@7516a69b
08:22:55.425 INFO - Started HttpContext[/wd,/wd]
08:22:55.425 INFO - Started SocketListener on 0.0.0.0:4444
08:22:55.425 INFO - Started org.openqa.jetty.jetty.Server@2db45934
08:22:58.786 INFO - Executing: [new session: Capabilities [{count=1, browserName=internet explorer}]])
08:22:58.796 INFO - Creating a new session for Capabilities [{count=1, browserName=internet explorer}]
Started InternetExplorerDriver server (64-bit)
2.42.0.0
Listening on port 6076
08:23:01.716 INFO - Done: [new session: Capabilities [{count=1, browserName=internet explorer}]]
08:23:01.726 INFO - Executing: [set script timeoutt: 500000])
08:23:01.736 INFO - Done: [set script timeoutt: 500000]
08:23:01.746 INFO - Executing: [maximise window])
08:23:01.756 INFO - Done: [maximise window]
08:23:01.776 INFO - Executing: [get: data:text/html,<html></html>])
08:23:01.816 INFO - Done: [get: data:text/html,<html></html>]
08:23:01.836 INFO - Executing: [execute script: window.name = "NG_DEFER_BOOTSTRAP!" + window.name;window.location.replace("http://localhost:8000/#/login");, []])
08:23:01.886 INFO - Done: [execute script: window.name = "NG_DEFER_BOOTSTRAP!" + window.name;window.location.replace("http://localhost:8000/#/login");, []]
08:23:01.916 INFO - Executing: [execute script: return window.location.href;, []])
08:23:02.316 WARN - Exception thrown
org.openqa.selenium.NoSuchWindowException: Unable to get browser (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 10 milliseconds
Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:03'
System info: host: 'ARROW005175', ip: '10.1.1.111', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_65'
Session ID: ce626086-1871-442c-a39e-2424fafeeada
Driver info: org.openqa.selenium.ie.InternetExplorerDriver
Capabilities [{platform=WINDOWS, javascriptEnabled=true, elementScrollBehavior=0, ignoreZoomSetting=false, enablePersistentHover=true, ie.ensureCleanSession=false, browserName=internet explorer, enableElementCacheCleanup=true, unexpectedAlertBehaviour=dismiss, version=11, ie.usePerProcessProxy=false, cssSelectorsEnabled=true, ignoreProtectedModeSettings=false, requireWindowFocus=false, handlesAlerts=true, initialBrowserUrl=http://localhost:6076/, ie.forceCreateProcessApi=false, nativeEvents=true, browserAttachTimeout=0, ie.browserCommandLineSwitches=, takesScreenshot=true}]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:599)
    at org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:508)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.openqa.selenium.support.events.EventFiringWebDriver$2.invoke(EventFiringWebDriver.java:101)
    at com.sun.proxy.$Proxy3.executeScript(Unknown Source)
    at org.openqa.selenium.support.events.EventFiringWebDriver.executeScript(EventFiringWebDriver.java:213)
    at org.openqa.selenium.remote.server.handler.ExecuteScript.call(ExecuteScript.java:55)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:169)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
08:23:02.316 WARN - Exception: Unable to get browser (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 10 milliseconds
Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:03'
System info: host: 'ARROW005175', ip: '10.1.1.111', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_65'
Session ID: ce626086-1871-442c-a39e-2424fafeeada
Driver info: org.openqa.selenium.ie.InternetExplorerDriver
Capabilities [{platform=WINDOWS, javascriptEnabled=true, elementScrollBehavior=0, ignoreZoomSetting=false, enablePersistentHover=true, ie.ensureCleanSession=false, browserName=internet explorer, enableElementCacheCleanup=true, unexpectedAlertBehaviour=dismiss, version=11, ie.usePerProcessProxy=false, cssSelectorsEnabled=true, ignoreProtectedModeSettings=false, requireWindowFocus=false, handlesAlerts=true, initialBrowserUrl=http://localhost:6076/, ie.forceCreateProcessApi=false, nativeEvents=true, browserAttachTimeout=0, ie.browserCommandLineSwitches=, takesScreenshot=true}]
Attempting to shut down selenium nicely
08:23:05.436 INFO - Checking Resource aliases
08:23:05.446 INFO - Command request: shutDownSeleniumServer[, ] on session null
08:23:05.446 INFO - Shutdown command received
08:23:05.446 INFO - initiating shutdown
08:23:05.446 INFO - Got result: OK on session null
Selenium Standalone has exited with code 0
@juliemr
Copy link
Member

juliemr commented Aug 22, 2014

Were you updating from 1.0? Do other browsers work? Do you see the browser appearing before closing, or does it never open at all?

Our IE tests are passing on Travis (https://travis-ci.org/angular/protractor/jobs/33211817)

@elgalu
Copy link
Contributor

elgalu commented Aug 22, 2014

I upgraded protractor master branch today and all my IE11, IE10, IE9 tests as passing ok.

@mhentgesarrow you could try running your own selenium with other version than '2.42.2' to narrow the problem .

@mitchhentges
Copy link
Author

This is rather peculiar, as using the same versions of selenium and IEDriver as I was with 1.0.0. Due to this, I'm going to hold off on attempting to my own selenium server as this appears to be a Protractor discrepancy. If possible, I'd like to narrow down the exactly where things go south rather than working around it. For my live, actual tests I'm just sticking with 1.0.0 for know.

Also, I didn't update directly from Protractor 1.0.0. I'm still figuring out the tricks of npm, so I just deleted the protractor directory from the node_modules folder and reinstalled Protractor after editing my package.json file.

Also: oops, sorry, didn't give the full description of how this happens:
1: I fire up the drivers with node .\node_modules\protractor\bin\webdriver-manager start
2: I start any test. E.g. .\node_modules\.bin\protractor config\spec-e2e.js --suite testing
3: IE opens to the page where it says "This is the initial start page for the Webdriver server."
4: IE redirects to data:text/html,<html></html>
5: IE stops doing anything, errors appear in both the webdriver-manager console and the protractor console.

I neglected to put the webdriver-manager errors in the original comment, so I'm just adding them now

@mitchhentges
Copy link
Author

Update: found the exact issue where things hit the fan. If I don't use the browser variable, then I'm fine. However, I need to use browser, and as soon as it is called, webdriver reports that it doesn't exist and fails

@juliemr
Copy link
Member

juliemr commented Aug 22, 2014

Thanks for the more detailed info, that's super helpful. The issue is in step #4. Internet Explorer doesn't support Data URLs - so Protractor has a check which doesn't use a data URL if the browser is IE. It seems like that isn't working for you for some reason! Here's the relevant code: https://github.com/angular/protractor/blob/master/lib/runner.js#L184

If you could, it would be awesome if you could put a couple of logging statements in there to see what's going wrong.

@mitchhentges
Copy link
Author

Operation IDon'tKnowWhatI'mDoing is a go

@juliemr
Copy link
Member

juliemr commented Aug 22, 2014

I'd love to see the output of changing that to:

  driver.getCapabilities().then(function(caps) {
    // Internet Explorer does not accept data URLs, which are the default
    // reset URL for Protractor.
    // Safari accepts data urls, but SafariDriver fails after one is used.
    var browserName = caps.get('browserName');
    console.log('********* BROWSER NAME: ' + browserName);
    if (browserName === 'internet explorer' || browserName === 'safari') {
      browser.resetUrl = 'about:blank';
    }
  });

@mitchhentges
Copy link
Author

I'm all over this as soon as #1227 is rippin' along
EDIT: For whatever reason, I was under the impression that Protractor was compiled and wasn't editable if being imported into a project with npm install.
Anyways, new output is:

<snip>
********* XTREME BROWSER NAME: undefined
<snip>

@mitchhentges
Copy link
Author

Can I provide any more information to help make IE a testable browser again?

@juliemr
Copy link
Member

juliemr commented Aug 27, 2014

Ah I'm sorry, I never saw the edit to the comment above.

I'm not sure why your browser name is undefined, that's very odd. Is there any chance that you've got a strange version of IE installed?

Are you still seeing this line in the webdriver executable output?: WARN - Exception: Unable to get browser

@mitchhentges
Copy link
Author

Julie, can I revise my answer? I went full oops above, it did actually detect IE.
The output of Protractor is:

Starting selenium standalone server...
Selenium standalone server started at http://10.1.1.111:4444/wd/hub
********* XTREME BROWSER NAME: internet explorer

C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\error.js:109
  var template = new Error(this.message);
                 ^
NoSuchWindowError: Unable to get browser (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 10 milliseconds
Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:03'
System info: host: 'ARROW005175', ip: '10.1.1.111', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_65'
Session ID: 18e53da3-d357-4997-9c48-755730df0947
Driver info: org.openqa.selenium.ie.InternetExplorerDriver
Capabilities [{platform=WINDOWS, javascriptEnabled=true, elementScrollBehavior=0, ignoreZoomSetting=false, enablePersistentHover=true, ie.ensureCleanSession=false, browserName=internet explorer, enableElementCacheCleanup=true, unexpectedAlertBehaviour=dismiss, version=11, ie.usePerProcessProxy=false, cssSelectorsEnabled=true, ignoreProtectedModeSettings=false, requireWindowFocus=false, handlesAlerts=true, initialBrowserUrl=http://localhost:36530/, ie.forceCreateProcessApi=false, nativeEvents=true, browserAttachTimeout=0, ie.browserCommandLineSwitches=, takesScreenshot=true}]
    at new bot.Error (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\error.js:109:18)
    at Object.bot.response.checkResponse (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\response.js:106:9)
    at C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:277:20
    at C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\base.js:1243:15
    at webdriver.promise.ControlFlow.runInNewFrame_ (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1539:20)
    at notify (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:362:12)
    at notifyAll (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:331:7)
    at resolve (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:309:7)
    at fulfill (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:429:5)
    at C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1406:10
    at C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\base.js:1243:15
    at webdriver.promise.ControlFlow.runInNewFrame_ (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1539:20)
    at notify (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:362:12)
    at notifyAll (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:331:7)
    at resolve (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:309:7)
    at fulfill (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:429:5)
    at C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\base.js:1243:15
    at webdriver.promise.ControlFlow.runInNewFrame_ (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1539:20)
    at notify (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:362:12)
    at notifyAll (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:331:7)
    at resolve (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:309:7)
    at fulfill (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:429:5)
    at C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:617:49
    at C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\http\http.js:96:5
    at IncomingMessage.<anonymous> (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\http\index.js:122:7)
    at IncomingMessage.EventEmitter.emit (events.js:117:20)
    at _stream_readable.js:920:16
    at process._tickCallback (node.js:415:13)
==== async task ====
WebDriver.executeScript()
    at webdriver.WebDriver.schedule (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:268:15)
    at webdriver.WebDriver.executeScript (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:404:15)
    at C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\lib\protractor.js:1034:24
    at webdriver.promise.ControlFlow.runInNewFrame_ (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1539:20)
    at pollCondition (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1305:12)
    at C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1301:5
    at webdriver.promise.ControlFlow.runInNewFrame_ (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1539:20)
    at webdriver.promise.ControlFlow.runEventLoop_ (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1404:8)
    at wrapper [as _onTimeout] (timers.js:252:14)
    at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
==== async task ====
Timed out waiting for page to load after 10000ms
    at webdriver.promise.ControlFlow.wait (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1296:15)
    at webdriver.WebDriver.wait (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:543:21)
    at Protractor.get (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\lib\protractor.js:1033:15)
    at exports.config.onPrepare (C:\Users\mhentges\Documents\Navistream\webclient\config\spec-e2e.js:30:17)
    at Runner.runFilenamesOrFns_ (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\lib\runner.js:68:20)
    at Runner.runTestPreparers (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\lib\runner.js:101:15)
    at Object.exports.run (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\lib\frameworks\jasmine.js:38:10)
    at driverprovider_.setupEnv.then.then.then.testResult (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\lib\runner.js:267:28)
    at _fulfilled (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\q\q.js:797:54)
    at self.promiseDispatch.done (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\q\q.js:826:30)
    at Promise.promise.promiseDispatch (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\q\q.js:759:13)
    at C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\q\q.js:573:44
    at flush (C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\node_modules\q\q.js:108:17)
    at process._tickCallback (node.js:415:13)

The full output of webdriver:

seleniumProcess.pid: 7876
Aug 27, 2014 11:18:45 AM org.openqa.grid.selenium.GridLauncher main
INFO: Launching a standalone server
Setting system property webdriver.chrome.driver to C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\selenium\chromedriver.exe
Setting system property webdriver.ie.driver to C:\Users\mhentges\Documents\Navistream\webclient\node_modules\protractor\selenium\IEDriverServer.exe
11:18:45.397 INFO - Java: Oracle Corporation 24.65-b04
11:18:45.407 INFO - OS: Windows 7 6.1 amd64
11:18:45.407 INFO - v2.42.2, with Core v2.42.2. Built from revision 6a6995d
11:18:45.497 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub
11:18:45.497 INFO - Version Jetty/5.1.x
11:18:45.497 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
11:18:45.497 INFO - Started HttpContext[/selenium-server,/selenium-server]
11:18:45.497 INFO - Started HttpContext[/,/]
11:18:45.567 INFO - Started org.openqa.jetty.jetty.servlet.ServletHandler@682d490b
11:18:45.567 INFO - Started HttpContext[/wd,/wd]
11:18:45.577 INFO - Started SocketListener on 0.0.0.0:4444
11:18:45.577 INFO - Started org.openqa.jetty.jetty.Server@2253d4bf
11:18:53.927 INFO - Executing: [new session: Capabilities [{count=1, browserName=internet explorer}]])
11:18:53.937 INFO - Creating a new session for Capabilities [{count=1, browserName=internet explorer}]
Started InternetExplorerDriver server (64-bit)
2.42.0.0
Listening on port 37237
11:18:56.670 INFO - Done: [new session: Capabilities [{count=1, browserName=internet explorer}]]
11:18:56.680 INFO - Executing: [set script timeoutt: 500000])
11:18:56.690 INFO - Done: [set script timeoutt: 500000]
11:18:56.700 INFO - Executing: [get: data:text/html,<html></html>])
11:18:56.740 INFO - Done: [get: data:text/html,<html></html>]
11:18:56.760 INFO - Executing: [execute script: window.name = "NG_DEFER_BOOTSTRAP!" + window.name;window.location.replace("http://localhost:8000/#/login");, []])
11:18:56.810 INFO - Done: [execute script: window.name = "NG_DEFER_BOOTSTRAP!" + window.name;window.location.replace("http://localhost:8000/#/login");, []]
11:18:56.840 INFO - Executing: [execute script: return window.location.href;, []])
11:18:57.180 WARN - Exception thrown
org.openqa.selenium.NoSuchWindowException: Unable to get browser (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 10 milliseconds
Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:03'
System info: host: 'ARROW005175', ip: '10.1.1.111', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_65'
Session ID: 27d6dc1c-c67d-457a-bce9-0f98eb892d7a
Driver info: org.openqa.selenium.ie.InternetExplorerDriver
Capabilities [{platform=WINDOWS, javascriptEnabled=true, elementScrollBehavior=0, ignoreZoomSetting=false, enablePersistentHover=true, ie.ensureCleanSession=false, browserName=internet explorer, enableElementCacheCleanup=true, unexpectedAlertBehaviour=dismiss, version=11, ie.usePerProcessProxy=false, cssSelectorsEnabled=true, ignoreProtectedModeSettings=false, requireWindowFocus=false, handlesAlerts=true, initialBrowserUrl=http://localhost:37237/, ie.forceCreateProcessApi=false, nativeEvents=true, browserAttachTimeout=0, ie.browserCommandLineSwitches=, takesScreenshot=true}]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:599)
    at org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:508)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.openqa.selenium.support.events.EventFiringWebDriver$2.invoke(EventFiringWebDriver.java:101)
    at com.sun.proxy.$Proxy3.executeScript(Unknown Source)
    at org.openqa.selenium.support.events.EventFiringWebDriver.executeScript(EventFiringWebDriver.java:213)
    at org.openqa.selenium.remote.server.handler.ExecuteScript.call(ExecuteScript.java:55)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:169)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
11:18:57.180 WARN - Exception: Unable to get browser (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 10 milliseconds
Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:03'
System info: host: 'ARROW005175', ip: '10.1.1.111', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_65'
Session ID: 27d6dc1c-c67d-457a-bce9-0f98eb892d7a
Driver info: org.openqa.selenium.ie.InternetExplorerDriver
Capabilities [{platform=WINDOWS, javascriptEnabled=true, elementScrollBehavior=0, ignoreZoomSetting=false, enablePersistentHover=true, ie.ensureCleanSession=false, browserName=internet explorer, enableElementCacheCleanup=true, unexpectedAlertBehaviour=dismiss, version=11, ie.usePerProcessProxy=false, cssSelectorsEnabled=true, ignoreProtectedModeSettings=false, requireWindowFocus=false, handlesAlerts=true, initialBrowserUrl=http://localhost:37237/, ie.forceCreateProcessApi=false, nativeEvents=true, browserAttachTimeout=0, ie.browserCommandLineSwitches=, takesScreenshot=true}]

Finally, if you want to check that I didn't pull another oops, here's the anonymous function related to getting driver capabilities:

  driver.getCapabilities().then(function(caps) {
    // Internet Explorer does not accept data URLs, which are the default
    // reset URL for Protractor.
    // Safari accepts data urls, but SafariDriver fails after one is used.
    var browserName = caps.get('browserName');
    console.log('********* XTREME BROWSER NAME: ' + browserName);
    if (browserName === 'internet explorer' || browserName === 'safari') {
      browser.resetUrl = 'about:blank';
    }
  });

@juliemr
Copy link
Member

juliemr commented Aug 27, 2014

Can you try following the instructions about 'For IE 11 only' on this page: https://code.google.com/p/selenium/wiki/InternetExplorerDriver

@juliemr
Copy link
Member

juliemr commented Aug 27, 2014

FYI here is the bug documented on selenium: https://code.google.com/p/selenium/issues/detail?id=6511

@elgalu
Copy link
Contributor

elgalu commented Aug 27, 2014

If nothing works you can also try switching to 32 bits IEDriver: http://selenium-release.storage.googleapis.com/2.42/IEDriverServer_Win32_2.42.0.zip

@elgalu
Copy link
Contributor

elgalu commented Aug 27, 2014

And even if all that didn't yet work, try following this instructions: http://elgalu.github.io/2014/run-protractor-against-internet-explorer-vm/#step4

@mitchhentges
Copy link
Author

For the sake of reference: I've tried both the 32bit and the 64bit driver. I'm using IE11

@mitchhentges
Copy link
Author

Here's my big question though: why does my current configuration work perfectly with Protractor 1.0.0, but not 1.1.0 or 1.1.1?

@juliemr
Copy link
Member

juliemr commented Aug 27, 2014

That's a good question, very little code related to the webdriver bin has changed - are you sure that it works perfectly with 1.0.0?

@mitchhentges
Copy link
Author

I can completely verify that it works with 1.0.0.
I can use the exact same webdriver executables that I am using with 1.0.0, update to 1.1.0, then fire up Protractor. It still doesn't work.

@juliemr
Copy link
Member

juliemr commented Aug 27, 2014

Does it still fail (on either version) if you start up the server using webdriver-manager start in a separate process and use the seleniumAddress option in the config?

@mitchhentges
Copy link
Author

I am using the separate webdriver-manager process. Even with that set up, it fails on 1.1.0 and works on 1.0.0.

However!
Following the instructions for IE setup made IE work for the newer versions of Protractor! That's pretty awesome!

Quick backstory time:
The first time that I had set up Protractor, I followed the instructions to the letter. It was a good time, things worked, the sun shone down on my computer and it worked A+ly. At one point, my request for 64bit Windows finally succeeded, and I had the OS reinstalled. I re-setup Protractor, but missed one key list of instructions - the important IE instructions. The weirdest thing is how IE still worked for older versions of Protractor, even though Protected Mode and Enhanced Protected Mode were still enabled. Huh.

Now, I'm going to see if I can reproduce the problem using just the Protractor 1.0.0 library, then will move up the commits until I find out where my life fell apart.

@juliemr
Copy link
Member

juliemr commented Aug 27, 2014

Thank you! It would be great to know when 1.1 is breaking stuff.

@elgalu
Copy link
Contributor

elgalu commented Aug 27, 2014

@mhentgesarrow, out of curiosity, which "Following the instructions for IE setup made IE work" fixed it?

@mitchhentges
Copy link
Author

Disabling "Protected Mode" for all zones did the trick for me.

@mitchhentges
Copy link
Author

Just an update:
I cloned the Protractor repository and changed spec/environment.js so that the TEST_BROWSER_NAME was internet explorer. Additionally, I rolled back to version 1.1.0.

IE is working completely fine. This is pretty strange.

@elgalu
Copy link
Contributor

elgalu commented Aug 27, 2014

Disabling "Protected Mode" for all zones did the trick for me.

Thanks, I was asking because I never needed to configure the 'For IE 11 only' registry edit stuff so I'm not including that in the blog page.

@mitchhentges
Copy link
Author

Another note: I have a VM that has the same issue. It:

  • Has protected mode enabled for the Internet and Restricted Sites zones, yet webdriver isn't complaining about that
  • Still isn't working when I disable protected mode for all zones

@mitchhentges
Copy link
Author

I'm going to do my debugging and things separately. This is essentially fixed: Follow the instructions for configuring IE.

@pratikp91
Copy link

thumbs up for the last link by mhentgesarrow. Got to know about that zoom level was more than 100 in my ie browser. and also about the new registry key that I have to make . that fixed my problem of unable to get browser and other errors

@RickChihu
Copy link

"On IE 7 or higher on Windows Vista or Windows 7, you must set the Protected Mode settings for each zone to be the same value. The value can be on or off, as long as it is the same for every zone. To set the Protected Mode settings, choose "Internet Options..." from the Tools menu, and click on the Security tab. For each zone, there will be a check box at the bottom of the tab labeled "Enable Protected Mode"." Uncheck all boxes
https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants