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

IE doesn't work as of Protractor 1.1.0 unless settings have been fine-tuned #1248

Closed
mitchhentges opened this issue Aug 27, 2014 · 13 comments
Closed

Comments

@mitchhentges
Copy link

On installations of IE with just the default settings, versions of Protractor 1.1.0 and later do not work. Protractor provides errors like:

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

C:\Users\IEUser\Documents\Protractor\node_modules\selenium-webdriver\lib\atoms\error.js:109
  var template = new Error(this.message);
                 ^
UnknownError: JavaScript error (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 40 milliseconds
Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:03'
System info: host: 'IE10Win7', ip: '10.0.2.15', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_67'
Session ID: 2022bf60-ba85-4485-afcd-251122dd0b4f
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=10, ie.usePerProcessProxy=false, cssSelectorsEnabled=true, ignoreProtectedModeSettings=false, requireWindowFocus=false, handlesAlerts=true, initialBrowserUrl=http://localhost:10607/, ie.forceCreateProcessApi=false, nativeEvents=true, browserAttachTimeout=0, ie.browserCommandLineSwitches=, takesScreenshot=true}]
    at new bot.Error (C:\Users\IEUser\Documents\Protractor\node_modules\selenium-webdriver\lib\atoms\error.js:109:18)
    at Object.bot.response.checkResponse (C:\Users\IEUser\Documents\Protractor\node_modules\selenium-webdriver\lib\atoms\response.js:106:9)
    at C:\Users\IEUser\Documents\Protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:277:20
    at C:\Users\IEUser\Documents\Protractor\node_modules\selenium-webdriver\lib\goog\base.js:1243:15
    at webdriver.promise.ControlFlow.runInNewFrame_ (C:\Users\IEUser\Documents\Protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1539:20)
    at notify (C:\Users\IEUser\Documents\Protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:362:12)
    at notifyAll (C:\Users\IEUser\Documents\Protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:331:7)
    at resolve (C:\Users\IEUser\Documents\Protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:309:7)
    at fulfill (C:\Users\IEUser\Documents\Protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:429:5)
    at C:\Users\IEUser\Documents\Protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1406:10
==== async task ====
WebDriver.executeScript()
    at webdriver.WebDriver.schedule (C:\Users\IEUser\Documents\Protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:268:15)
    at webdriver.WebDriver.executeScript (C:\Users\IEUser\Documents\Protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:404:15)
    at Protractor.get (C:\Users\IEUser\Documents\Protractor\lib\protractor.js:1027:15)
    at exports.config.onPrepare (C:\Users\IEUser\Documents\Protractor\myconf.js:30:17)
    at Runner.runFilenamesOrFns_ (C:\Users\IEUser\Documents\Protractor\lib\runner.js:68:20)
    at Runner.runTestPreparers (C:\Users\IEUser\Documents\Protractor\lib\runner.js:101:15)
    at Object.exports.run (C:\Users\IEUser\Documents\Protractor\lib\frameworks\jasmine.js:38:10)
    at driverprovider_.setupEnv.then.then.then.testResult (C:\Users\IEUser\Documents\Protractor\lib\runner.js:266:28)
    at _fulfilled (C:\Users\IEUser\Documents\Protractor\node_modules\q\q.js:797:54)

Webdriver fails with:

seleniumProcess.pid: 3844
Aug 27, 2014 3:32:29 PM org.openqa.grid.selenium.GridLauncher main
INFO: Launching a standalone server
Setting system property webdriver.chrome.driver to C:\Users\IEUser\Documents\Protractor\selenium\chromedriver.exe
Setting system property webdriver.ie.driver to C:\Users\IEUser\Documents\Protractor\selenium\IEDriverServer.exe
15:32:30.131 INFO - Java: Oracle Corporation 24.65-b04
15:32:30.141 INFO - OS: Windows 7 6.1 x86
15:32:30.151 INFO - v2.42.2, with Core v2.42.2. Built from revision 6a6995d
15:32:30.351 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub
15:32:30.351 INFO - Version Jetty/5.1.x
15:32:30.351 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
15:32:30.351 INFO - Started HttpContext[/selenium-server,/selenium-server]
15:32:30.351 INFO - Started HttpContext[/,/]
15:32:30.441 INFO - Started org.openqa.jetty.jetty.servlet.ServletHandler@133badd
15:32:30.441 INFO - Started HttpContext[/wd,/wd]
15:32:30.452 INFO - Started SocketListener on 0.0.0.0:4444
15:32:30.452 INFO - Started org.openqa.jetty.jetty.Server@e771f3
15:32:33.796 INFO - Executing: [new session: Capabilities [{count=1, browserName=internet explorer}]])
15:32:33.846 INFO - Creating a new session for Capabilities [{count=1, browserName=internet explorer}]
Started InternetExplorerDriver server (32-bit)
2.42.0.0
Listening on port 39856
15:32:38.874 INFO - Done: [new session: Capabilities [{count=1, browserName=internet explorer}]]
15:32:38.904 INFO - Executing: [set script timeoutt: 500000])
15:32:38.914 INFO - Done: [set script timeoutt: 500000]
15:32:38.944 INFO - Executing: [get: data:text/html,<html></html>])
15:32:39.414 INFO - Done: [get: data:text/html,<html></html>]
15:32:39.424 INFO - Executing: [execute script: window.name = "NG_DEFER_BOOTSTRAP!" + window.name;window.location.replace("http://localhost:8081/");, []])
15:32:39.995 WARN - Exception thrown
org.openqa.selenium.WebDriverException: JavaScript error (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 50 milliseconds
Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:03'
System info: host: 'IE10Win7', ip: '10.0.2.15', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_67'
Session ID: 4ca3cb38-e5c8-4b17-9dfe-48e96d79272d
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=10, ie.usePerProcessProxy=false, cssSelectorsEnabled=true, ignoreProtectedModeSettings=false, requireWindowFocus=false, handlesAlerts=true, initialBrowserUrl=http://localhost:39856/, 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)
15:32:40.005 WARN - Exception: JavaScript error (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 50 milliseconds
Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:03'
System info: host: 'IE10Win7', ip: '10.0.2.15', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_67'
Session ID: 4ca3cb38-e5c8-4b17-9dfe-48e96d79272d
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=10, ie.usePerProcessProxy=false, cssSelectorsEnabled=true, ignoreProtectedModeSettings=false, requireWindowFocus=false, handlesAlerts=true, initialBrowserUrl=http://localhost:39856/, ie.forceCreateProcessApi=false, nativeEvents=true, browserAttachTimeout=0, ie.browserCommandLineSwitches=, takesScreenshot=true}]
@mitchhentges
Copy link
Author

The IE-breaker commit is commit 953faf7.
Prior to that commit, IE works marvelously. After that commit, IE has to be carefully configured in order to work with Protractor.

To reproduce:
1 Set up a fresh VM from Microsoft. For guaranteed reproducibility, use a Windows 7, IE10 one
2 Install git
3 Install java
4 Install NodeJS
5 git clone https://github.com/angular/protractor.git
6 cd protractor
7 npm install
8 Checkout commit 9dcd2edba0d15e3699c5adc594f2191a831a97f3
9 Set up a config file myconf.js:

exports.config = {
    seleniumPort: 4444,
    seleniumArgs: [],

    chromeOnly: false,
    multiCapabilities: [
        {
            'browserName': 'internet explorer'
        }
    ],

    specs: [
        'spec.js'
    ],

    baseUrl: 'http://localhost:8081',

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

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

10 Set up a spec file spec.js:

describe('IE', function() {
    it('should run this spec', function() {
        expect(true).toBe(true);
    });
});

11 node bin/webdriver-manager update --ie
12 node bin/webdriver-manager start
13 In a separate process: npm start
14 In another process: node bin/protractor myconf.js

  • This will work properly

15 Checkout commit 953faf7ebee345f686bfedff61ebcb29c5170083
16 Run node bin/protractor myconf.js again

  • This will fail

@mitchhentges mitchhentges changed the title Fresh installation of IE doesn't work as of Protractor 1.1.0 IE doesn't work as of Protractor 1.1.0 unless settings have been fine-tuned Aug 27, 2014
@juliemr
Copy link
Member

juliemr commented Aug 28, 2014

Thanks for investigating so thoroughly! I will look into why that change breaks it, but I think the real question is why it worked before.

@mitchhentges
Copy link
Author

No problem. Good luck!

@diegope
Copy link

diegope commented Dec 30, 2014

I think I'm hitting this issue with 1.5.0 as well.

Mitchhentges, could you please share the fine tuning that is required to work around this?

@mitchhentges
Copy link
Author

Here, take a peek at #1223.

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

  • juliemr

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

@juliemr
Copy link
Member

juliemr commented Dec 30, 2014

Take a look at https://code.google.com/p/selenium/wiki/InternetExplorerDriver

It's got a 'required configuration' paragraph that should help you out.

@diegope
Copy link

diegope commented Dec 30, 2014

Will do. Thanks guys!!!!

@diegope
Copy link

diegope commented Dec 30, 2014

I followed all the steps in the post and am still hitting the issue - on IE 11 (11.0.9600.17498). I've tried this both with Protected Mode on/off.

It seems that there is a problem getting a handle to the Window. I got trace output from IEDriverServer with the following:

W 2014-12-30 11:10:41:929 BrowserFactory.cpp(557) -2147024891 [Access is denied.]: Call to IHTMLWindow2::get_screen failed

I 2014-12-30 11:10:41:930 IECommandExecutor.cpp(656) Persistent hovering set to: 1

I 2014-12-30 11:10:43:257 Browser.cpp(116) No child frame focus. Focus is on top-level frame

W 2014-12-30 11:10:43:272 Script.cpp(486) -2147024891 [Access is denied.]: Unable to execute code, call to IHTMLWindow2::execScript failed

W 2014-12-30 11:10:43:273 Script.cpp(172) Cannot create anonymous function

W 2014-12-30 11:10:43:273 ElementFinder.cpp(154) Unexpected error attempting to find element by mechanism id and criteria cred_sign_in_button

W 2014-12-30 11:10:43:525 response.cc(74) Error response has status code 7 and message 'Finding elements with id == cred_sign_in_buttonreturned an unexpected error' message

I 2014-12-30 11:10:43:733 Browser.cpp(116) No child frame focus. Focus is on top-level frame.

@mitchhentges
Copy link
Author

Do you want to try running as Admin?
I'm not sure, I haven't run into that one before. This is out of my league :(

@diegope
Copy link

diegope commented Dec 30, 2014

I've tried as admin with no change... :(

Interestingly enough, I reverted to using Protractor 1.0.0 and am still getting the issue. All things equal, the only change in my configuration is the IE 11 build number - there seems to be a recent update that is causing issues (11.0.9600.17498)...

@diegope
Copy link

diegope commented Dec 30, 2014

Found the corresponding IEDriver/Selenium issue:

https://code.google.com/p/selenium/issues/detail?id=8302

@juliemr
Copy link
Member

juliemr commented Mar 17, 2015

Looks like the corresponding issue is fixed, I'm closing this one as obsolete.

@juliemr juliemr closed this as completed Mar 17, 2015
@nervgh
Copy link

nervgh commented Aug 30, 2015

I have same issue.

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

It is not working for me.

I did followed instructions of that article.
I have no registry key like FEATURE_DISABLE_INTERNAL_SECURITY_MANAGER which was mentioned here.

My log

Selenium standalone server started at http://192.168.0.14:51332/wd/hub

root\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\error.js:113
  var template = new Error(this.message);
                 ^
UnknownError: The path to the driver executable must be set by the webdriver.ie.driver system property; for more information, see http://code.google.com/p/selenium/wiki/InternetExplorerDriver. The latest version can be downloaded from http://selenium-release.storage.googleapis.com/index.html
    at new bot.Error (root\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\error.js:113:18)
    at Object.bot.response.checkResponse (root\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\response.js:106:9)
    at root\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:158:24
    at [object Object].promise.ControlFlow.runInFrame_ (root\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1877:20)
    at [object Object].promise.Callback_.goog.defineClass.notify (root\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:2464:25)
    at [object Object].promise.Promise.notify_ (root\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:563:12)
    at Array.forEach (native)
    at Object.goog.array.forEach (root\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\array\array.js:203:43)
    at [object Object].promise.Promise.notifyAll_ (root\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:552:16)
    at goog.async.run.processWorkQueue (root\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\async\run.js:125:21)
From: Task: WebDriver.createSession()
    at Function.webdriver.WebDriver.acquireSession_ (root\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:155:22)
    at Function.webdriver.WebDriver.createSession (root\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:129:30)
    at [object Object].Builder.build (root\node_modules\protractor\node_modules\selenium-webdriver\builder.js:416:22)
    at [object Object].DriverProvider.getNewDriver (root\node_modules\protractor\lib\driverProviders\driverProvider.js:38:7)
    at [object Object].Runner.createBrowser (root\node_modules\protractor\lib\runner.js:180:37)
    at root\node_modules\protractor\lib\runner.js:256:21
    at _fulfilled (root\node_modules\protractor\node_modules\q\q.js:797:54)
    at self.promiseDispatch.done (root\node_modules\protractor\node_modules\q\q.js:826:30)
    at Promise.promise.promiseDispatch (root\node_modules\protractor\node_modules\q\q.js:759:13)
    at root\node_modules\protractor\node_modules\q\q.js:573:44
[launcher] Process exited with error code 1

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

4 participants