运行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本身,我有以下设置:
每当我搜索这个问题时,我都会找到一年前的答案,通常与Selenium 2.53或类似内容有关。最近有没有人经历过这个,如果有的话,它是如何解决的?谢谢!
答案 0 :(得分:2)
当您在IE中使用64位和32位进程的混合模式时,会出现输入速度慢的问题。
假设您使用64位版本的驱动程序:
解决方案是使用32位版本的IEDriverServer 3.5.1。
答案 1 :(得分: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;
}
}
答案 2 :(得分:0)
你必须使用32位IEdriver。
请浏览此链接以获取更多信息:
<强> https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/5116 强>