Selenium WebDriver在IE浏览器的文本字段中键入非常慢

时间:2015-01-16 13:43:27

标签: internet-explorer selenium selenium-webdriver

我在IE 11浏览器上使用Selenium 2.43.1运行我的一个脚本 当脚本使用以下内容在文本字段中键入时:

element.sendKeys("string");

在IE浏览器中,我可以看到字符串中的一个字符在文本字段中输入,在输入下一个字符之前等待1-2秒。输入一个角色的方法需要1-2秒。

  1. 为什么用IE输入这么慢?
  2. 有没有其他方法可以加快输入速度?

18 个答案:

答案 0 :(得分:50)

我的问题在于驱动程序架构,并通过下载和使用32位解决方案来修复它。

要切换到32位,这是你需要做的事情

  1. http://selenium-release.storage.googleapis.com/index.html
  2. 下载32位驱动程序服务
  3. 使用您的InterExplorerWeDriver课程实例化 InternetExplorerDriverService类,带有32位驱动程序的路径 服务。

    InternetExplorerDriver ieDiver = new InternetExplorerDriver(“Path to the 32 bit Explorer driver”);

  4. OR 如果使用构建器:

    System.setProperty(“webdriver.ie.driver”,“C:\\drivers\\IEDriverServer.exe”);
    DesiredCapabilities ieCapabilities=DesiredCapabilities.internetExplorer();
    ieCapabilities.setCapability(InternetExplorerDriver
     .INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
    ieCapabilities.setCapability("requireWindowFocus", true);
    File ie_temp=newFile(“C:\\Selenium\\IEDrivertemp”);
    InternetExplorerDriverService.Builder 
    ies=newInternetExplorerDriverService.Builder();
    ies.withExtractPath(ie_temp);
    InternetExplorerDriverService service=ies.build();
    WebDriver driver=newInternetExplorerDriver(service,ieCapabilities))
    

    帮助我解决问题的主题

    http://forumsqa.com/question/typing-too-slow-in-text-fields-while-replaying-tests/

答案 1 :(得分:32)

对我而言,它适用于64位版本的IEDriverServer。我添加了属性requireWindowFocus,其值为“true”:

DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
...
capabilities.setCapability("requireWindowFocus", true);
WebDriver driver = new InternetExplorerDriver(capabilities);

我正在使用Selenium / IE驱动程序的2.47版本

答案 2 :(得分:14)

对于64位WebDriver:

  1. 打开IE
  2. 转到“Internet选项”→“高级”→“安全”
  3. 检查☑启用增强保护模式的64位进程
  4. 单击“应用”和“确定”
  5. 对于32位WebDriver:

    1. 打开IE
    2. 转到“Internet选项”→“高级”→“安全”
    3. 取消选中☐启用增强保护模式的64位进程
    4. 单击“应用”和“确定”
    5. 奇怪:

      • 无论是否激活增强保护模式,都必须进行设置。
      • 除了对话框中显示的文字外,无需重新启动计算机。

      我的设置:Windows 10,IE 11,64位,Selenium 3.4

答案 3 :(得分:11)

这为我加速了一点。 IEDriverServer 2.53.1

InternetExplorerOptions options = new InternetExplorerOptions();
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
options.RequireWindowFocus = true;
driver = new InternetExplorerDriver(options);

答案 4 :(得分:5)

您可以更改为32位版本,但如果需要64位,则可以尝试此解决方案:

  • 互联网选项 - >安全 - >检查所有区域的“启用保护模式”
  • 转到高级 - >安全 - >选中“启用增强保护模式”

这导致在64位IE上不再输入蜗牛。

答案 5 :(得分:2)

使用64位版本的IEDriverServer时遇到了同样的问题。改为32位,工作正常。

来源: WebDriver and IE10 very slow input

答案 6 :(得分:2)

我也有同样的问题。你可以尝试

  

互联网选项 - >连接 - >局域网设置 - >取消自动检测设置

希望这有帮助。

答案 7 :(得分:2)

对于在IE11 64bit上运行的测试,将NATIVE_EVENTS功能设置为false对我有用。 如果没有它,使用64位驱动程序服务器3.0的速度非常慢。 32位3.0驱动程序服务器吞下了它应该发送的一些字符(例如" FluentLenium"变成" FlntLnum")。

以下解决了这两个问题。

DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.NATIVE_EVENTS, false);
WebDriver driver = new InternetExplorerDriver(capabilities);

我不确定这是否会产生额外的副作用。

答案 8 :(得分:1)

对于 IEServerDriver 3.14.0 ,此功能可加快输入速度。

WebDriver browser;
InternetExplorerOptions options = new InternetExplorerOptions();
    options.disableNativeEvents();
    options.requireWindowFocus();
browser = new InternetExplorerDriver(options);

不建议使用DesiredCapabilities方法,并且options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;options.RequireWindowFocus = true;不再可用。

答案 9 :(得分:0)

仅提供一些说明不能解决原始问题的问题,但可能会帮助今天遇到类似问题的人

对于其他浏览器,其驱动程序版本通常取决于浏览器版本,但对于IE驱动程序,其版本取决于硒版本!

我想强调这一点,因为它很重要,我在答案中的任何地方都没有指出。我也直到最近才知道。今天(创建此帖子时),selenium package from public python repository的版本为3.141.0,但是selenium.dev page建议下载32位IE驱动程序的版本为3.150.1。这两个版本并不完全兼容,所以我遇到了相同的问题(但是,原因不同)。

不幸的是,该线程的一些建议(即将RequireWindowFocus设置为True)为我解决了打字速度慢的问题。我说不幸的是,因为我的测试仍然不稳定,而且,作为奖励,浏览器窗口仍然位于所有内容的最前面,并且在单击时实际移动了鼠标光标,使我无法并行执行多个测试。

将最新稳定版本的驱动程序替换为与我的硒软件包版本匹配的较旧版本的驱动程序后,我的问题得到了肯定的解决,并且我什至不需要搞混RequireWindowFocus(以及我不希望使用的所有其他选项) )。

继续测试!

答案 10 :(得分:0)

为了提高发送键功能的速度,可以执行以下步骤: -

  1. 转到项目 - >属性 - > Java编译器 - >在java合规性下 - 选择使用合规性选项并将编译合规性级别更改为1.7,然后单击以应用。
  2. 它会顺利运作。

答案 11 :(得分:0)

我在Windows x64位上也遇到了与IE11相同的问题。我使用64位版本的IEDriverServer.exe(IE驱动程序-3.7.0与selenium-3.7.0)。

我更改为32位版本的IEDriverServer.exe后,它解决了问题

答案 12 :(得分:0)

我使用了Action对象和sendKeys方法,而不是WebEelement.send.keys。这就像一个魅力。

答案 13 :(得分:0)

您可以更改为32位版本,速度与64位相比。

答案 14 :(得分:0)

禁用NATIVE_EVENT解决了我的问题

 DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
 capabilities.setCapability(InternetExplorerDriver.NATIVE_EVENTS, false);
 driver = new InternetExplorerDriver(capabilities);

答案 15 :(得分:0)

我挣扎了差不多一天才发现。这是因为64位IE驱动程序服务器(IEDriverServer_x64_2.53.1)。

我切换到IEDriverServer_Win32_2.53.1然后它工作了,现在它是超快的!

答案 16 :(得分:0)

这可能是您正在运行测试的计算机的问题。如果您遇到计算机的一般延迟,那么就会发生这种情况。

  

是否有其他方法可以加快输入速度?

当然,您可以创建自定义方法来清除文本,然后使用JavaScript填充该字段。 (请注意,这样做,可能无法使用“预先输入”和“键入时的建议”等内容)

答案 17 :(得分:-2)

以下代码帮助我解决了这个问题。

DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
...
capabilities.setCapability("requireWindowFocus", true);
WebDriver driver = new InternetExplorerDriver(capabilities);