1

运行 Selenium IEDriverServer 3.5.1 32bit,我在 Internet Explorer v11 中遇到非常非常慢的文本输入。奇怪的是,如果我切换到 IEDriverServer 3.4.0(也是 32 位),它并不慢,但整体测试执行速度会有所放缓(奇怪的是,这个问题仅在几天前浮出水面。以前我使用 3.5.1 没有问题)。有没有人找到这个问题的合法解决方案?这是我的网络驱动程序定义:

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);

此外,在 IE 本身上,我有以下设置:

  • 所有安全区域设置为保护模式 ON
  • 高级 > 安全 > 为增强保护模式启用 64 位进程未选中。
  • 连接 > 局域网设置 > 自动检测设置未选中

每次我用谷歌搜索这个问题时,我都会找到一年前的答案,通常与 Selenium 2.53 或类似的东西有关。最近有没有人经历过这种情况,如果有,它是如何解决的?谢谢!

4

3 回答 3

2

当您在 IE 中使用 64 位和 32 位进程的混合模式时,会出现键入缓慢的问题。
假设您使用 64 位版本的驱动程序:解决方案是使用 32 位版本的 IEDriverServer 3.5.1。

于 2017-09-21T19:07:12.493 回答
1

sendKeys 的性能在 IE 中不好,所以在我的情况下,我创建了以下解决方法来将文本设置为元素:

@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;
    }
}
于 2017-09-22T04:02:48.163 回答
0

您必须使用 32 位 IEdriver。

请通过此链接了解更多信息:

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

于 2017-09-22T05:59:15.717 回答