【问题标题】:Selenium WebDriver typing very slow in text field on IE browserSelenium WebDriver 在 IE 浏览器的文本字段中输入速度很慢
【发布时间】:2015-03-15 03:17:18
【问题描述】:

我正在使用Selenium 2.43.1IE 11 浏览器上运行我的脚本之一 当脚本使用以下文本字段输入时:

element.sendKeys("string");

在 IE 浏览器中,我可以看到在文本字段中输入了一个字符串字符,它在输入下一个字符之前等待 1-2 秒。表示输入一个字符需要 1-2 秒。

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

【问题讨论】:

标签: internet-explorer selenium selenium-webdriver


【解决方案1】:

我的问题出在驱动架构上,并通过下载和使用 32 位架构解决了这个问题。

在这里切换到 32 位是你必须做的

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

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

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/

【讨论】:

  • 是的,编辑并解释了要点,但由于有其他答案指向相同的原因,并且由于我投了反对票,因此很可能会删除答案:)
  • 要检查您是否运行 32 位或 64 位 IE:请参阅 answers.microsoft.com/en-us/ie/forum/ie8-windows_other/…
  • 我在 64 位 Windows 机器上,所以我想“为什么要使用 32 位 WebDriver?”但后来我检查了;瞧,我的 64 位机器配备了 32 位 Internet Explorer。这个答案——即使我最初忽略了它——是唯一有效的方法。您可以在seleniumhq.org/download 下载IEDriverServer.exe
  • 如果您检查 IE 设置“为增强保护模式启用 64 位进程”,64 位 WebDriver 也一样快(请参阅下面的答案)。
  • 如果您从该参考链接复制粘贴而不是向我们推荐它,那就太好了。不幸的是,该网站已关闭。
【解决方案2】:

对我来说,它适用于 64 位版本的 IEDriverServer。我添加了具有“true”值的属性 requireWindowFocus:

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

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

【讨论】:

  • 谢谢,“requireWindowFocus = true”对我也有帮助。
  • 不幸的是,在我将 Selenium 从 3.4.0 升级到 3.5.1 后,此解决方法停止工作。它也不适用于 3.5.2 :(
  • @morgwai,你是如何修复 3.5.2 的?
  • @Jugi,我没有:我向 IEDriver 报告了一个错误,维护人员立即关闭了它,告诉我切换到 32 位。
  • 它也解决了我的问题。非常感谢。此解决方案适用于 64 位驱动程序
【解决方案3】:

对于 64 位 WebDriver:

  1. 打开 IE
  2. 转到 Internet 选项 → 高级 → 安全
  3. 选中 ☑ 为增强保护模式启用 64 位进程
  4. 点击应用和确定

对于 32 位 WebDriver:

  1. 打开 IE
  2. 转到 Internet 选项 → 高级 → 安全
  3. 取消选中 ☐ 为增强保护模式启用 64 位进程
  4. 点击应用和确定

奇怪的是:

  • 无论是否激活增强保护模式,该设置都是必需的。
  • 除了对话框中的文字说明外,不需要重新启动我的计算机。

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

【讨论】:

  • 它不工作。如果更改保护模式,网页会崩溃
【解决方案4】:

这对我来说加快了一点。 IEDriverServer 2.53.1

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

【讨论】:

  • IntroduceInstabilityByIgnoringProtectedModeSettings 和 RequireWindowFocus 在 IEDriverServer 3.14.0 中不再可用。而是使用“disableNativeEvents()”。
【解决方案5】:

你可以换成 32 位版本,但是如果需要 64 位,你可以试试这个解决方案:

  • Internet 选项 -> 安全 -> 选中所有区域的“启用保护模式”
  • 进入高级 -> 安全 -> 勾选“启用增强保护模式”

这导致在 64 位 IE 上不再有蜗牛打字。

【讨论】:

  • 即使在当前版本 (3.6.0) 中,这确实有效,没有明显的副作用...除了现在所有区域都启用了保护模式!这是一个很好的答案,但解决方案本身很差,因为为所有区域启用保护模式会破坏许多站点(在我的情况下,这包括几个脆弱的内部供应商产品)。
【解决方案6】:

对于在 IE11 64 位上运行的测试,将 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);

我不确定这是否有额外的副作用。

【讨论】:

    【解决方案7】:

    我在使用 64 位版本的 IEDriverServer 时遇到了同样的问题。换成 32bit 就很好用了。

    来源: WebDriver and IE10 very slow input

    【讨论】:

      【解决方案8】:

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

      Internet 选项 -> 连接 -> LAN 设置 -> 取消勾选自动检测设置

      希望这会有所帮助。

      【讨论】:

        【解决方案9】:

        我在 Windows x64 位上使用 IE11 时也遇到了同样的问题。我使用的是 64 位版本的 IEDriverServer.exe(带有 selenium-3.7.0 的 IE driver-3.7.0)。

        我换成32位版本的IEDriverServer.exe后,问题解决了

        【讨论】:

        • 这解决了我在 IE 中输入 WebDriver turtle 的问题,使用本回复时的所有最新版本
        【解决方案10】:

        对于 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; 不再可用。

        【讨论】:

          【解决方案11】:

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

          有没有其他方法可以加快打字速度?

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

          【讨论】:

            【解决方案12】:

            我挣扎了将近一天才找到答案。这是因为 64 位 IE 驱动程序服务器 (IEDriverServer_x64_2.53.1)。

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

            【讨论】:

              【解决方案13】:

              禁用 NATIVE_EVENT 解决了我的问题

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

              【讨论】:

                【解决方案14】:

                你可以换成32位版本,速度会比64位快。

                【讨论】:

                • 请添加更多详细信息
                【解决方案15】:

                我使用带有 sendKeys 方法的 Actions 对象而不是 WebEelement.send.keys。这就像一个魅力。

                【讨论】:

                  【解决方案16】:

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

                  1. 进入项目-->属性->Java编译器-->在java合规性下--取消选择使用合规性选项并将编译合规级别更改为1.7,然后点击应用。

                  它会顺利运行。

                  【讨论】:

                  • ...对于我们其他人,那些使用 C# 或 Python 的人来说呢?
                  【解决方案17】:

                  只是一些评论不会解决原始问题的问题,但可能会帮助今天遇到类似问题的人:

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

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

                  不幸的是,这个帖子的一些建议,即将RequireWindowFocus 设置为True,为我解决了打字缓慢的问题。我说很遗憾,因为我的测试一直不稳定,而且,作为奖励,浏览器窗口仍然在所有内容的前面,并且在单击时物理移动鼠标光标,这使我无法并行执行多个测试。

                  在用与我的 selenium 包版本匹配的旧版本替换最新稳定版本的驱动程序后,我的问题肯定得到了解决,我什至不需要弄乱RequireWindowFocus(以及我不想要的所有其他选项)了.

                  继续测试!

                  【讨论】:

                    【解决方案18】:

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

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

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2013-10-08
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多