1

Running Selenium IEDriverServer 3.5.1 32bit, I am experiencing very, very slow text entry in Internet Explorer v11. Oddly, if I switch to IEDriverServer 3.4.0 (also 32bit) it is not slow, but overall test execution slows down somewhat (this issue only surfaced a few days ago, oddly. Previously I was using 3.5.1 with no issues). Has anyone found a legitimate solution to this issue? Here is my webdriver definition:

DesiredCapabilitiescaps = DesiredCapabilities.internetExplorer(); 
caps.setBrowserName("internet explorer"); 
caps.setCapability(InternetExplorerDriver.ENABLE_PERSISTENT_HOVERING, false); 
caps.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true); 
caps.setCapability(InternetExplorerDriver.NATIVE_EVENTS, false); 
caps.setCapability(InternetExplorerDriver.REQUIRE_WINDOW_FOCUS, true); 
caps.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); 
caps.setJavascriptEnabled(true);

Additionally, on IE itself, I have the following set:

  • All the security zones set to protected mode ON
  • Advanced > Security> Enable 64-bit processes for Enhanced Protected Mode is unchecked.
  • Connnections > Lan Settings > Automatically Detect Settings is unchecked

Every time I googled this issue, I find an answer from a year ago, usually related to Selenium 2.53 or something like that. Has anybody experienced this recently, and if so, how was it fixed? Thanks!

kroe761
  • 3,296
  • 9
  • 52
  • 81

3 Answers3

2

When you work with a mixed-mode of 64-bit and 32-bit processes in IE the problem of slow typing occurs.
Assuming that you use the 64 bits version of the driver: The solution would be to use the 32 bit version of IEDriverServer 3.5.1.

Koen Meijer
  • 811
  • 11
  • 19
1

The performance of sendKeys is not good with IE, so in my case, I create following work-around to set text to elements:

@Override
public boolean setValue(String text) {
    logger.info(String.format("<%s(%s) set value '%s'", el.getTagName(), el.getText(), text));
    try {
        JavascriptExecutor js = (JavascriptExecutor) webElementFinder.getDriver();
        js.executeScript("arguments[0].value = arguments[1];",
                waitForElementVisible(config.getBrowserElementFinderTimeout()), text);
        return true;
    } catch (TimeoutException e) {
        logger.warn(e.getMessage());
        logger.warn(
                String.format("<%s(%s) Element not visible within timeout period", el.getTagName(), el.getText()));
        return false;
    }
}
Tony Bui
  • 815
  • 5
  • 7
0

You have to use 32 bit IEdriver.

Please go through this link for more information:

https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/5116

iamsankalp89
  • 4,607
  • 2
  • 15
  • 36