Java 使用Selenium IEDriverServer输入非常慢的文本?

Java 使用Selenium IEDriverServer输入非常慢的文本?,java,selenium,selenium-webdriver,selenium-iedriver,iedriverserver,Java,Selenium,Selenium Webdriver,Selenium Iedriver,Iedriverserver,运行Selenium IEDriverServer 3.5.1 32位,我在Internet Explorer v11中遇到非常非常慢的文本输入。奇怪的是,如果我切换到IEDriverServer 3.4.0(也是32位),它并不慢,但总体测试执行速度有所下降(奇怪的是,这个问题几天前才出现。以前我使用的是3.5.1,没有任何问题)。有人找到了这个问题的合法解决方案吗?以下是我的webdriver定义: DesiredCapabilitiescaps = DesiredCapabilities.

运行Selenium IEDriverServer 3.5.1 32位,我在Internet Explorer v11中遇到非常非常慢的文本输入。奇怪的是,如果我切换到IEDriverServer 3.4.0(也是32位),它并不慢,但总体测试执行速度有所下降(奇怪的是,这个问题几天前才出现。以前我使用的是3.5.1,没有任何问题)。有人找到了这个问题的合法解决方案吗?以下是我的webdriver定义:

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本身,我有以下设置:

  • 所有安全区域都设置为打开时的保护模式
  • 高级>安全>启用增强保护模式的64位进程未选中
  • 未选中连接>Lan设置>自动检测设置

每次我在谷歌上搜索这个问题,我都能找到一年前的答案,通常与Selenium 2.53或类似的东西有关。最近有人经历过这种情况吗?如果有,它是如何修复的?谢谢

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

在IE中,sendKeys的性能不好,因此在我的例子中,我创建了以下解决方案来设置元素的文本:

@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;
    }
}
@覆盖
公共布尔设置值(字符串文本){

logger.info(String.format(“您必须使用32位IEdriver

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


不,我使用的是32位版本。我想补充一点,不知道我怎么会错过它。你的系统上安装了什么样的Internet Explorer?我运行的是IE11 32位或64位版本?操作系统是64位的,但据我所知,IE几乎总是使用32位版本的应用程序。我不知道具体是什么确切地说是哪个版本启动的,但两个版本都已安装。我使用的是32位IEDriver