Selenium webdriver-The IE driver server

6,357 views
Skip to first unread message

sanam

unread,
May 31, 2012, 8:47:51 AM5/31/12
to seleniu...@googlegroups.com
Hi,

      What is the The Internet Explorer Driver Server? I mean this server was not required in previous webdriver but is required for selenium 2.22.

What capabilities does this bring in? How is it better than the previous webdrivers when this was not required?

Thanks,
Sanam

Jim Evans

unread,
May 31, 2012, 10:52:51 AM5/31/12
to seleniu...@googlegroups.com
The biggest end-user need it solves is the ability to run multiple instances of IE at the same time. Prior to this, certain language bindings could do that, while others couldn't.

Additionally, the native code integration semantics of different higher-level languages are different (Java is different from .NET, which is different from Ruby, which is different from Python). Moving to an external process unifies those semantics.

Also, it allows users to test 32-bit or 64-bit IE, regardless of whether they're running a 32-bit or 64-bit language runtime. Previously, if you were running a 64-bit JVM, you couldn't test 32-bit IE, and vice versa. Now you can.

Moving to this model allows us to decouple release schedules too. That means that you can pick up new fixes to the IE driver without having to wait for a full Selenium release.

Finally, from a developer perspective, debugging the standalone executable is much, much easier than attempting to debug the embedded .dll. Being able to attach to the separate process is a big, big win.

I know that many people will be concerned about having to download a component separately. I would answer those concerns by pointing out that you already have to do that for Chrome, and that it's pretty straightforward to have a command-line client (like curl or wget) that will download the server automatically so that you do not have to perform a manual step.

I'm sensing from your tone that you don't necessarily see the merit in moving to the standalone server. Can you help me understand what your concerns are about this particular change?

--Jim

sanam

unread,
May 31, 2012, 11:12:57 AM5/31/12
to seleniu...@googlegroups.com
Hi Jim,

          Thank you for the details. It is really helpful.

I have no concerns as such, but wanted to understand what changes would using this independent server bring in and would it solve issues that are being faced for IE driver.

Eg: We have a application as below:

Main Login page (page1)--Click on login button--> Opens a new page say Page2. (using getwindowhandles, we are able to get handle of this new page2)

Click on button on Page 2---> opens MODAL WIndow say Page 3  (using getwindowhandles, we are able to get handle of this new page3) 

Click on a button on Modal Window 3---> it open a NON Modal window say Page 4 (using getwindowhandles, we are NOT able to get handle of this new page4.get window handles returns only 3 handles.)

The strange thing is, few months back when using Selenium 2.19, this was workign as expected on our application. Now, even 2.19 is failing to get the windowhandles.

So I am not sure if something has changed in the application or in IEdriver.

So i wanted to understand if using the new IE standalone server such issues will be resolved. I used the IEServer.exe as well... I am still facing the issue.

I read on many forums that with IE driver this is a common issue and by doing getwindowhandles() multiple times or giving a wait time, this issue gets resolved. However in my case, even these workarounds are not helping.

Thanks,
Sanam

Krishnan Mahadevan

unread,
May 31, 2012, 11:52:43 AM5/31/12
to seleniu...@googlegroups.com
Jim,

>>>>>>>The biggest end-user need it solves is the ability to run multiple instances of IE at the same time. Prior to this, certain language bindings could do that, while others couldn't.

This is awesome stuff !!! Thanks a ton.


Thanks & Regards
Krishnan Mahadevan

"All the desirable things in life are either illegal, expensive, fattening or in love with someone else!"



--
You received this message because you are subscribed to the Google Groups "Selenium Users" group.
To view this discussion on the web visit https://groups.google.com/d/msg/selenium-users/-/iRdu66YhJC0J.
To post to this group, send email to seleniu...@googlegroups.com.
To unsubscribe from this group, send email to selenium-user...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/selenium-users?hl=en.

Mike Riley

unread,
May 31, 2012, 1:13:01 PM5/31/12
to seleniu...@googlegroups.com
Jim,

Can you update the page on the IE to have all this info so we can just point people to it?

http://code.google.com/p/selenium/wiki/InternetExplorerDriver

What you posted raised a couple of new questions for me.

  1. How many instances of IE can be run now?
  2. How do you choose between the 32-bit and 64-bit versions of IE9 (Capabilities settings?)?  The info for the older Driver module said it chose based on the bit-ness of OS, but from what you said here it sounds like we can choose programatically (which would be cool).
Thanks for your work on this.  I hope to be trying it out soon.

Mike

Luke Inman-Semerau

unread,
May 31, 2012, 1:20:50 PM5/31/12
to seleniu...@googlegroups.com
1) Try it out and let us know ;)  ... that's kinda like asking how many firefox's one can run... I say 5, some say 200+

2) IIRC It all depends on what bitness you are running in when you launch your process

--
You received this message because you are subscribed to the Google Groups "Selenium Users" group.
To view this discussion on the web visit https://groups.google.com/d/msg/selenium-users/-/KRAZ9h1J8w4J.

Jim Evans

unread,
May 31, 2012, 1:41:14 PM5/31/12
to seleniu...@googlegroups.com
No, I'm not going to update the wiki page anytime soon. Quite frankly, I've got other priorities at the moment.

Please note that the "multiple instances of IE" feature hasn't been tested extensively. I'm sure there are gotchas in there that we haven't uncovered. We'll try to fix them when they appear though, and I'm looking forward to your experiences.

The bit-ness of IE is strictly determined by the bit-ness of the IEDriverServer.exe that you start up. You'll notice on the downloads page that there is a 32-bit and a 64-bit version of the executable. Use the 32-bit executable to run 32-bit IE, and use the 64-bit executable to run 64-bit IE. Note that you can use either executable with any bit-ness of your language binding runtime (JVM), because all you're doing is launching an external process.

Dejan Veternik

unread,
Jun 15, 2012, 3:44:59 AM6/15/12
to seleniu...@googlegroups.com
Is it possible to take benefits from IEDriverServer also if you are using RemoteWebDriver?

Thanks,
Dejan

Dne četrtek, 31. maj 2012 14:47:51 UTC+2 je oseba sanam napisala:

Krishnan Mahadevan

unread,
Oct 12, 2012, 10:09:41 AM10/12/12
to seleniu...@googlegroups.com
Parikshit

Here's a sample code that you can run which confirms that with Java bindings Parallelism is still NOT something that can be done directly using InternetExplorerDriver.

public class InternetDriverTest {

    @Test
    public void foo() throws InterruptedException{
        System.out.println("foo() running in Thread #" + Thread.currentThread().getId());
        InternetExplorerDriver ieDriver = createDriver("foo.log");
        ieDriver.get("http://www.google.com");
        Thread.sleep(5000);
        System.out.println("foo() says Page URL = " + ieDriver.getCurrentUrl());
        ieDriver.quit();

    }

    @Test
    public void bar() throws InterruptedException{
        System.out.println("bar() running in Thread #" + Thread.currentThread().getId());
        InternetExplorerDriver ieDriver = createDriver("bar.log");
        ieDriver.get("http://www.yahoo.com");
        Thread.sleep(10000);
        System.out.println("bar() says Page URL = " + ieDriver.getCurrentUrl());
        ieDriver.quit();

    }

    public InternetExplorerDriver createDriver(String logFileName) {
        System.setProperty("webdriver.ie.driver", "C:\\Users\\krmahadevan\\WebDriverBinaries\\IEDriverServer.exe");
        File logFile = new File(System.getProperty("user.dir") + File.separator + logFileName);
        InternetExplorerDriverService service = new InternetExplorerDriverService.Builder().withLogFile(logFile)
                .withLogLevel(InternetExplorerDriverLogLevel.TRACE).build();
        DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
        capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
        InternetExplorerDriver ieDriver = new InternetExplorerDriver(service, capabilities);
        return ieDriver;

    }

}

console output :

Suites: 0 and:0
[TestNG] Running:
  C:\Users\krmahadevan\AppData\Local\Temp\testng-eclipse-297335512\testng-customsuite.xml

[TestRunner] Starting executor for test Default test with time out:2147483647 milliseconds.
bar() running in Thread #11
foo() running in Thread #12
SSttaarrtteedd  IInntteerrnneettEExxpplloorreerrDDrriivveerr  sseerrvveerr  ((3322--bbiitt))


2.25.3.0
Listening on port 35895
Log level is set to TRACE
Log file is set to C:\Users\krmahadevan\test-projects\ExperimentsWithTestNGAndSelenium\bar.log
2.25.3.0
Listening on port 8937
Log level is set to TRACE
Log file is set to C:\Users\krmahadevan\test-projects\ExperimentsWithTestNGAndSelenium\foo.log
log4j:WARN No appenders could be found for logger (org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN No appenders could be found for logger (org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager).
log4j:WARN Please initialize the log4j system properly.
bar() says Page URL = http://sg.yahoo.com/?p=us
Oct 12, 2012 7:36:56 PM org.openqa.selenium.os.UnixProcess$SeleniumWatchDog destroyHarder
INFO: Command failed to close cleanly. Destroying forcefully (v2). org.openqa.selenium.os.UnixProcess$SeleniumWatchDog@d24111a
PASSED: bar

>>>After this point I would have to open up the task manager and kill the hung IEDriverServer.exe for my eclipse to finish its runs.

Thanks & Regards
Krishnan Mahadevan

"All the desirable things in life are either illegal, expensive, fattening or in love with someone else!"



On Fri, Oct 12, 2012 at 2:27 PM, parikshit chakraborty <itsmyz...@gmail.com> wrote:
Hi Jim,

I am new to this group and was searching how can i execute a script in multiple instances of IE at the same time in a single machine and saw your reply on new IEDriver and IEDriver.exe.

Actually, I am trying to execute my test automation script in multiple (more than one) instances of IE browser in parallel, but unable to do so. As suggested in seleniumhq.org, i have downloaded latest "IEDriverServer.exe" and added the same in %PATH% variable. I am using TestNG xml to execute the script. A snippet of testng.xml which I am using is as below

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name=" Regression" verbose="1" parallel="tests" thread-count="3">

   <parameter name="URL" value="https://qamain1b.qa.gtnexus.com/desk/welcome.jsp"></parameter>

<test name="Test" preserve-order="true" parallel="classes">
<parameter name="browser" value="*iexplore"></parameter>
<classes>
<class name="org.gtn.p2p.commercialinvoice.adjustment.AddChargesandDiscountPOI"></class>
                        <class name="org.gtn.p2p.commercialinvoice.adjustment.AddChargesandDiscountPOI"></class> 
</classes>
</test>
</suite> 

I am using IE9 in Windows7 64 bit OS.

Am I doing anything wrong. Please help.


Regards,
Parikshit

--
You received this message because you are subscribed to the Google Groups "Selenium Users" group.
To post to this group, send email to seleniu...@googlegroups.com.
To unsubscribe from this group, send email to selenium-user...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msg/selenium-users/-/nFGH5EeMMaIJ.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Jim Evans

unread,
Oct 16, 2012, 5:40:12 PM10/16/12
to seleniu...@googlegroups.com
Krishnan, I believe this is now working as of today. Can you please retry your code with the latest unpublished drop of the IEDriverServer.exe? The 32-bit exe can be downloaded at http://selenium.googlecode.com/svn/trunk/cpp/prebuilt/Win32/Release.

--Jim

parikshit chakraborty

unread,
Oct 18, 2012, 12:50:11 AM10/18/12
to seleniu...@googlegroups.com
Hi Jim,

I have downloaded latest IEDriverServer.exe from http://selenium.googlecode.com/svn/trunk/cpp/prebuilt/x64/Release/. But unfortunately still can't execute multiple instances of IE in the same machine at the same time.

The testng.xml that I am using is already there in my previous post. I am really clueless where I am going wrong. Please help

Regards,
Parikshit

Krishnan Mahadevan

unread,
Oct 18, 2012, 1:17:06 AM10/18/12
to seleniu...@googlegroups.com
Jim,
You are absolutely correct [which is again obvious, since you know the IEDriver better than anyone else :)]

I do see parallel executions happening with the 32bit pre-built binary that you shared.

Just for the sake of completeness for others, here's the complete info, I decided to put up the sample that I used, my console logs, as well as the IE driver logs in this gist incase someone wants to refer to it. : https://gist.github.com/3909969



Thanks & Regards
Krishnan Mahadevan

"All the desirable things in life are either illegal, expensive, fattening or in love with someone else!"




To view this discussion on the web visit https://groups.google.com/d/msg/selenium-users/-/87YKKdRQLkAJ.

Arran

unread,
May 23, 2013, 4:40:41 AM5/23/13
to seleniu...@googlegroups.com
I'm not really sure what your intention is, you are using the driver twice, on the same field, why not just use a second one? For instance have remoteWebDriver and driver ...? Why do you need two at all? The IEDriver should be no different to using RemoteWebDriver (it just wraps some capabilities for you)

On Wednesday, 22 May 2013 15:15:09 UTC+1, Mateus Da Silva wrote:
Hi Everyone,

Quick question, Can IEDriver and RemoteWebDriver work together?

I am running from my machine connectiing remotely using remote webdriver and from there run a vm. It works perfectly with chromedriver but not being successful when doing it with iedriver

There is my code:
    DesiredCapabilities cap = new DesiredCapabilities();
        cap.setJavascriptEnabled(true);
        cap=DesiredCapabilities.internetExplorer();
       
        cap.setPlatform(org.openqa.selenium.Platform.VISTA);
        cap.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
        cap.setCapability("jenkins.nodeName", "LondVDI045-Slave"); //availableSUT
   
        cap.setCapability("seleniumProtocol","WebDriver");
       System.setProperty("webdriver.ie.driver", "C:\\IEDriver\\IEDriverServer.exe");
        try{
       
       
        driver = new RemoteWebDriver (new URL(WebDriverConnection.getDriverURL()), cap);
     
        driver = new InternetExplorerDriver(cap);   
        driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
       
        pega = new ServiceInteractionUserAccessManager(driver);
        accManager = new AccountManager(driver);
        m_logger.info("Initialization Done");
        driver.manage().window().maximize();
        m_logger.info("Pega URL: " + WebDriverConnection.getPegaURL(" "));
        }catch (Exception e){
            System.out.println("Server not active, please check and restart RemoteWebDriverURL=http://myserver:4444/wd/hub");
            e.printStackTrace();
        }
    }

I am getting the following exception

org.openqa.selenium.WebDriverException: Error forwarding the new session cannot find : {platform=VISTA, seleniumProtocol=WebDriver, ensureCleanSession=true, browserName=internet explorer, jenkins.nodeName=LondVDI045-Slave, version=}


I would very much appreciate any help. From what i have been reading I gather that I need to download the stand alone server and put on the server where I want to run the tests from. I have put it on both vm and server machines and still not successful.

regards,
Mateus

Krishnan Mahadevan

unread,
May 23, 2013, 4:47:00 AM5/23/13
to Selenium Users
Mateus,

which will essentially tell you how to setup a Grid.

You would then couple that knowledge with the information from this wiki page.https://code.google.com/p/selenium/wiki/Grid2

This should essentially get to moving ahead.

In Short :

When you need all your tests to be executed on your local machine you would essentially use :

InternetExplorerDriver, ChromeDriver, FirefoxDriver, SafariDriver etc.,

When you need your tests to run in some remote machine which is not necessarily always your local machine you would essentially use RemoteWebDriver.

RemoteWebDriver is mostly intended to be used with Grid2.






Thanks & Regards
Krishnan Mahadevan

"All the desirable things in life are either illegal, expensive, fattening or in love with someone else!"
--
You received this message because you are subscribed to the Google Groups "Selenium Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to selenium-user...@googlegroups.com.

To post to this group, send email to seleniu...@googlegroups.com.

Sachin Anto

unread,
Jul 29, 2015, 9:17:27 PM7/29/15
to Selenium Users, krishnan.ma...@gmail.com
Is this still an issue, multiple ie instance was working for me, but stopped one fine day, I use an IE 32 bit driver,

Say I am running two tests, and they start of well, but either one or sometimes even both stop in the middle, just like that. 

I am pretty much new to programming. Pasted below is something that I have put together to test multiple applciations in my organisation.

//Calling the Internet Explorer/Chrome driver

System.setProperty("webdriver.ie.driver","IEDriverServer_32bit.exe");             
DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_ DOMAINS, true);
ieCapabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
wd=new InternetExplorerDriver(ieCapabilities);

Any guidance?

With Regards,
Sachin Anto.

Shawn McCarthy

unread,
Jul 29, 2015, 11:40:15 PM7/29/15
to Selenium Users, krishnan.ma...@gmail.com, sachi...@gmail.com
ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_ DOMAINS, true);
seems like it could cause flakiness by ignoring security domains. Have you tried removing that, and just setting the security domains to all enabled or disabled?

Sachin Anto

unread,
Jul 30, 2015, 12:40:54 AM7/30/15
to Selenium Users, krishnan.ma...@gmail.com, shawn.m...@gmail.com
Yes, that does not have any impact I just tried, 

will using ATL+TAB maually  to see whats happening on both the browser sessions while to tests are running cause this, I felt this might be shifting focus. This is something that I observed,

Mercious

unread,
Jul 30, 2015, 10:11:14 AM7/30/15
to Selenium Users, krishnan.ma...@gmail.com, shawn.m...@gmail.com, sachi...@gmail.com
Multiple Internet Explorer instances simply don't work.

Try turning nativeEvents off incase you dont need to handle javascript popups (and other stuff, that i am unware of yet). Its your best chance.

Sachin Anto

unread,
Aug 8, 2015, 1:21:09 PM8/8/15
to Mercious, Selenium Users, krishnan.ma...@gmail.com, shawn.m...@gmail.com
Removing this  INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_ DOMAINS, gave a lot of improvement.. I also use ignore zoom setting. So that say it all.

But I have a question, currently my browser does not have the same value for all 4 security domains, but selenium webdriver still works, but if I reset the internet explorer settings, it stops working, There is no change in the security domain settings before or after the settings reset though.

Mercious

unread,
Aug 10, 2015, 3:52:01 AM8/10/15
to Selenium Users, hart...@gmx.de, krishnan.ma...@gmail.com, shawn.m...@gmail.com
We don't know. Does it matter? No. Set them as they have to be set and stop worrying about it.

Do you have nativeEvents on false? And are you still trying to run multiple IE instances in parallel? 
Reply all
Reply to author
Forward
0 new messages