如何使用Selenium Webdriver 3.0.0修复IE 11上的慢sendkeys?

时间:2016-11-16 08:01:22

标签: selenium selenium-webdriver selenium-iedriver

Firefox和Chrome工作正常,但是对于IE 11,sendkeys非常慢。你是如何解决这个问题的?

我的环境:

  • 运行IE 11.103
  • 操作系统Windows 10
  • 我使用eclipse(版本:Neon Release(4.6.0))和java 1.8
  • selenium Webdriver 3.0.0

11 个答案:

答案 0 :(得分:5)

在我的环境中: WIN 10,selenium 3.4,IE64 我设置: Internet选项→高级→安全性→☑启用增强保护模式的64位进程

答案 1 :(得分:3)

经过大量在线阅读和实验后

  1. 我必须设置指向我的网络驱动程序的路径 右键单击我的计算机,然后选择“高级系统设置”,然后单击“环境变量”,然后选择“路径”并单击编辑。现在添加IEDriverServer.exe的路径,例如我的是“C:\ eclipse \ webdriver \ IEDriverServer.exe”。我建议重启你的电脑

  2. 您必须运行32位IE WEB驱动程序 http://selenium-release.storage.googleapis.com/index.html 我下载了3.0

  3. 现在,这是一块金色的部分,让我的世界变得与众不同。 将IE设置为以管理员身份运行。右键单击IE快捷方式并选择选项,在快捷方式选项卡下单击高级按钮,然后选中复选框“以管理员身份运行”。现在重启IE

  4. 当您打开IE时,请转到工具,然后转到Internet选项,然后转到安全选项卡。我在本地Intranet和受信任的站点上取消选中“启用保护模式”。重启IE

  5. 我使用了以下所需功能(我在网上找到了这个)

        DesiredCapabilities dc = new DesiredCapabilities();
    dc.setCapability(InternetExplorerDriver.ENABLE_PERSISTENT_HOVERING,false);
    dc.setCapability(InternetExplorerDriver.REQUIRE_WINDOW_FOCUS, false);
    dc.setCapability(InternetExplorerDriver.UNEXPECTED_ALERT_BEHAVIOR, true);
    dc.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
    dc.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true); 
    dc.setJavascriptEnabled(true);  
    
    WebDriver driver = new InternetExplorerDriver(dc);
    
  6. 这在我的环境中有效,请发布适用于您的内容

    请注意:在此之后我正在尝试使用64位驱动程序。 如果我创建了(InternetExplorerDriver.REQUIRE_WINDOW_FOCUS,true),那么它可以排序。在junit中,断言失败但我能够在第一页上使用发送密钥。

答案 2 :(得分:2)

我通过下载和使用32位一个来修复它。帮助我解决问题的主题

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

答案 3 :(得分:1)

更好的解决方案:

请注意:在执行此解决方案之前,我已经重置了所有IE设置,同样在我的第一个回答中,我运行的是旧版本的IE驱动程序。

  1. 下载最新的IE驱动程序 - 我已经下载了版本3.4 32位(当我测试时64位仍然很慢) http://selenium-release.storage.googleapis.com/index.html?path=3.4/

  2. 您需要更改IE设置 2.1转到工具 - >互联网选项 - >安全。将所有区域设置为相同的保护模式,启用或禁用无关紧要。像这样: http://seleniumquery.github.io/images/ie-driver-protected-mode-disable.png

  3. 现在在你的代码中添加:

    public static void runInternetExplorer() {
    
    System.setProperty("webdriver.ie.driver", "C:\\eclipse\\webdriver\\IE\\IEDriverServer.exe");
    
    WebDriver webDriver = new InternetExplorerDriver();
    new browser (webDriver);
    

    }

  4. 当我运行它时,它运行得非常好。如果这个解决方案没有工作,我已经离开了我之前的答案。

答案 4 :(得分:0)

ulimit -a -n版本ruby

的备注

该文档包含webdiriver IE参数的示例,即使它在起始点写入控制台。

实际上,正确的参数名称为3+

设置native_events
和webdriver将使用快速JS而不是慢速本机点击模拟。

答案 5 :(得分:0)

发行说明v2.47.0.1:

  • 在IE中启用cookie操作的快速失败。 cookie的重构 IE驱动程序的处理引入了与64位IE的不兼容性 驱动程序和IE 10和11在64位Windows上运行。就像那样 发送击键和创建屏幕截图,现在是Windows挂钩程序 用于获取和设置IE浏览器。这意味着在IE 10和11中 在64位Windows上,内容呈现过程仍然是32位,你 必须使用32位IEDriverServer.exe才能操作Cookie。 如果您尝试设置,此提交现在将导致抛出异常 或使用64位驱动程序对32位版本的IE(或 反之亦然),但特别是,这将影响错误尝试的用户 在64位Windows中使用64位可执行文件与IE 10或11。

https://raw.githubusercontent.com/SeleniumHQ/selenium/master/cpp/iedriverserver/CHANGELOG

所以你应该使用32位或者内容渲染需要改为64位

答案 6 :(得分:0)

IE 11在Windows 8.1 VM上运行缓慢,我运行的是IEDriverServer.exe 3.5.1.0(x32),我通过更改为IEDriverServer.exe 3.5.1.0(x64)进行了修复。注意:3.4.0.0无法解决此问题。 nativeEvents:false没有改变任何东西。司机在我的路径中,不确定如果没有,会发生什么。

答案 7 :(得分:0)

我改为IEDriver 32位(从64位)为我解决了这个问题。 IE 11,Windows 7,Selenium 3.4。

答案 8 :(得分:0)

在IE11中,重播测试时在文本字段(发送键)中键入数据太慢。

以下是系统信息。 IEDriver – 64位, 操作系统– Windows7 64位, IE10 – 64位

注意:我遇到同样的问题,并且解决了重新安装 IEDriver – 32位的问题,它可以与32位IE驱动程序正常工作。

答案 9 :(得分:0)

为使用Python 3.6和Selenium 3.14的开发人员发布此解决方案。

对于我来说,相关的IE设置受组策略锁定,因此任何需要更改IE设置的解决方案都不可行。

在我的特定环境(Windows 7 x64,IE 11.0.9600锁定,Python 3.6,Selenium 3.14.1)中,只有一种选项设置需要更改以修复缓慢的sendkey:

from selenium import webdriver
from selenium.webdriver.ie.options import Options

opts = Options()
opts.require_window_focus = True

driver = webdriver.Ie(options=opts)

答案 10 :(得分:0)

我一直在与IE11合作 硒库:selenium-server-standalone-3.141.59.jar 并具有以下发现:

在Windows 10 64位版本上 IE 11版本11.431.16299,更新版本11.0.65(KB4103765) 与IEDriverServer.exe(64位版本)一起使用时效果很好 无需对功能进行额外设置。可以输入键入时间(1秒内输入6个字符)

在Windows 10 64位版本上 IE 11版本11.15.16299.0更新版本11.0.47 KB4040685 IEDriverServer.exe(64位版本)的运行速度非常慢 要输入6个字符的字符串,每个字符需要3-4秒才能完成。 为了解决该问题,我测试了以下代码对我来说很好。

InternetExplorerOptions options = new InternetExplorerOptions();
options.setCapability(InternetExplorerDriver.REQUIRE_WINDOW_FOCUS, true);

在Windows 7 Professional 32位版本上 IE 11版本11.0.9600.18499,更新版本11.0.36(KB3191495) 可以与IEDriverServer.exe(32位版本)一起正常工作。键入周期是可接受的。(每秒6个字符) 无需额外设置