Selenium WebDriver 在 IE 浏览器的文本字段中输入非常慢
Selenium WebDriver typing very slow in text field on IE browser
我是 运行 我在 IE 11
浏览器上使用 Selenium 2.43.1
的脚本之一
当脚本使用以下内容在文本字段中键入时:
element.sendKeys("string");
在 IE 浏览器中,我可以看到在文本字段中输入了字符串的一个字符,然后等待 1-2 秒再输入下一个字符。意味着输入一个字符需要 1-2 秒。
- 为什么用 IE 打字这么慢?
- 有没有其他方法可以加快打字速度?
我的问题与驱动程序架构有关,并通过下载和使用 32 位驱动程序架构修复了它。
在这里切换到 32 位是你必须做的
- 从 http://selenium-release.storage.googleapis.com/index.html 下载 32 位驱动程序服务
实例化您的 InterExplorerWeDriver
class 使用
InternetExplorerDriverService
class 带有 32 位驱动程序的路径
服务。
InternetExplorerDriver ieDiver = new InternetExplorerDriver(“Path to the 32 bit Explorer driver”);
或 如果使用生成器:
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/
这可能是您用于 运行 测试的机器的问题。如果您遇到计算机普遍滞后的情况,就会发生这种情况。
Is there an alternate way to speed up typing?
当然,您可以创建一个自定义方法来清除文本,然后使用 JavaScript 来填充该字段。 (请注意,这样做可能无法处理 "typeahead" 和 "suggestions as you type" 之类的东西)
我在使用 64 位版本的 IEDriverServer 时遇到了同样的问题。换成 32 位,运行正常。
来源:
WebDriver and IE10 very slow input
我以前也有同样的问题。您可以通过
试用
Internet Options -> Connections -> LAN Settings -> Untick Automatically detect settings.
希望对您有所帮助。
对我来说,它适用于 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 版
您可以换成 32 位版本,但如果需要 64 位版本,您可以试试这个解决方案:
- Internet 选项 -> 安全 -> 检查所有区域 "Enable Protected Mode"
- 转到高级 -> 安全 -> 检查 "Enable Enhanced Protected Mode"
这导致在 64 位 IE 上不再需要蜗牛输入。
下面的代码帮助我解决了这个问题。
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
...
capabilities.setCapability("requireWindowFocus", true);
WebDriver driver = new InternetExplorerDriver(capabilities);
这加快了我的速度。 IEDriverServer 2.53.1
InternetExplorerOptions options = new InternetExplorerOptions();
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
options.RequireWindowFocus = true;
driver = new InternetExplorerDriver(options);
我挣扎了将近一天才找到答案。这是因为 64 位 IE 驱动程序服务器 (IEDriverServer_x64_2.53.1
)。
我切换到 IEDriverServer_Win32_2.53.1
然后它起作用了,现在超快了!
对于 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);
我不确定这是否有额外的副作用。
禁用 NATIVE_EVENT 解决了我的问题
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.NATIVE_EVENTS, false);
driver = new InternetExplorerDriver(capabilities);
您可以更改为 32 位版本,与 64 位相比速度更快。
对于 64 位 WebDriver:
- 打开IE
- 转到 Internet 选项 → 高级 → 安全
- 检查 ☑ 为增强保护模式启用 64 位进程
- 点击应用并确定
对于 32 位 WebDriver:
- 打开IE
- 转到 Internet 选项 → 高级 → 安全
- 取消选中 ☐ 为增强型保护模式启用 64 位进程
- 点击应用并确定
奇怪的是:
- 无论是否开启增强保护模式,该设置都是必须的
- 除了对话框中的文字说明外,没有必要重新启动我的计算机。
我的设置:Windows10,IE 11,所有 64 位,Selenium 3.4
我使用了带有 sendKeys 方法的 Actions 对象,而不是 WebEelement.send.keys。这就像一个魅力。
我在 Windows x64 位上也遇到了与 IE11 相同的问题。我使用的是 IEDriverServer.exe 的 64 位版本(IE driver-3.7.0 和 selenium-3.7.0)。
我换成32位版本的IEDriverServer.exe后,问题就解决了
要提高发送按键功能的速度,可以执行以下步骤:-
- 进入project-->properties->Java compiler-->在java compliance下--取消勾选use compliance选项,将compile compliance level改成1.7然后点击申请。
它将顺利运行。
对于 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;
不再可用。
只是一些评论,不会解决原始问题的问题,但可能会帮助今天遇到类似问题的人:
对于其他浏览器,其驱动版本通常取决于浏览器版本,但对于IE驱动,版本取决于selenium版本!
我想强调这一点,因为它很重要,而且我没有发现答案中的任何地方都指出了这一点。直到最近我也不知道这件事。今天(创建这个post时),selenium package from public python repository is on version 3.141.0, but selenium.dev page建议下载32位IE驱动3.150.1版本;这两个版本不完全兼容,所以我遇到了同样的问题(但是,出于不同的原因)。
不幸的是,这个帖子的一些建议,即将 RequireWindowFocus
设置为 True
,解决了我打字慢的问题。我说不幸的是,因为我的测试一直不稳定,而且,作为奖励,浏览器 window 仍然在所有内容的前面并且在物理上移动鼠标光标点击,使我无法并行执行多个测试.
用与我的 selenium 包版本相匹配的旧版本替换最新稳定版本的驱动程序后,我的问题肯定得到了解决,我什至不需要弄乱 RequireWindowFocus
(以及我所做的所有其他选项不想)了。
继续测试!
我是 运行 我在 IE 11
浏览器上使用 Selenium 2.43.1
的脚本之一
当脚本使用以下内容在文本字段中键入时:
element.sendKeys("string");
在 IE 浏览器中,我可以看到在文本字段中输入了字符串的一个字符,然后等待 1-2 秒再输入下一个字符。意味着输入一个字符需要 1-2 秒。
- 为什么用 IE 打字这么慢?
- 有没有其他方法可以加快打字速度?
我的问题与驱动程序架构有关,并通过下载和使用 32 位驱动程序架构修复了它。
在这里切换到 32 位是你必须做的
- 从 http://selenium-release.storage.googleapis.com/index.html 下载 32 位驱动程序服务
实例化您的
InterExplorerWeDriver
class 使用InternetExplorerDriverService
class 带有 32 位驱动程序的路径 服务。InternetExplorerDriver ieDiver = new InternetExplorerDriver(“Path to the 32 bit Explorer driver”);
或 如果使用生成器:
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/
这可能是您用于 运行 测试的机器的问题。如果您遇到计算机普遍滞后的情况,就会发生这种情况。
Is there an alternate way to speed up typing?
当然,您可以创建一个自定义方法来清除文本,然后使用 JavaScript 来填充该字段。 (请注意,这样做可能无法处理 "typeahead" 和 "suggestions as you type" 之类的东西)
我在使用 64 位版本的 IEDriverServer 时遇到了同样的问题。换成 32 位,运行正常。
来源: WebDriver and IE10 very slow input
我以前也有同样的问题。您可以通过
试用Internet Options -> Connections -> LAN Settings -> Untick Automatically detect settings.
希望对您有所帮助。
对我来说,它适用于 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 版您可以换成 32 位版本,但如果需要 64 位版本,您可以试试这个解决方案:
- Internet 选项 -> 安全 -> 检查所有区域 "Enable Protected Mode"
- 转到高级 -> 安全 -> 检查 "Enable Enhanced Protected Mode"
这导致在 64 位 IE 上不再需要蜗牛输入。
下面的代码帮助我解决了这个问题。
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
...
capabilities.setCapability("requireWindowFocus", true);
WebDriver driver = new InternetExplorerDriver(capabilities);
这加快了我的速度。 IEDriverServer 2.53.1
InternetExplorerOptions options = new InternetExplorerOptions();
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
options.RequireWindowFocus = true;
driver = new InternetExplorerDriver(options);
我挣扎了将近一天才找到答案。这是因为 64 位 IE 驱动程序服务器 (IEDriverServer_x64_2.53.1
)。
我切换到 IEDriverServer_Win32_2.53.1
然后它起作用了,现在超快了!
对于 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);
我不确定这是否有额外的副作用。
禁用 NATIVE_EVENT 解决了我的问题
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.NATIVE_EVENTS, false);
driver = new InternetExplorerDriver(capabilities);
您可以更改为 32 位版本,与 64 位相比速度更快。
对于 64 位 WebDriver:
- 打开IE
- 转到 Internet 选项 → 高级 → 安全
- 检查 ☑ 为增强保护模式启用 64 位进程
- 点击应用并确定
对于 32 位 WebDriver:
- 打开IE
- 转到 Internet 选项 → 高级 → 安全
- 取消选中 ☐ 为增强型保护模式启用 64 位进程
- 点击应用并确定
奇怪的是:
- 无论是否开启增强保护模式,该设置都是必须的
- 除了对话框中的文字说明外,没有必要重新启动我的计算机。
我的设置:Windows10,IE 11,所有 64 位,Selenium 3.4
我使用了带有 sendKeys 方法的 Actions 对象,而不是 WebEelement.send.keys。这就像一个魅力。
我在 Windows x64 位上也遇到了与 IE11 相同的问题。我使用的是 IEDriverServer.exe 的 64 位版本(IE driver-3.7.0 和 selenium-3.7.0)。
我换成32位版本的IEDriverServer.exe后,问题就解决了
要提高发送按键功能的速度,可以执行以下步骤:-
- 进入project-->properties->Java compiler-->在java compliance下--取消勾选use compliance选项,将compile compliance level改成1.7然后点击申请。
它将顺利运行。
对于 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;
不再可用。
只是一些评论,不会解决原始问题的问题,但可能会帮助今天遇到类似问题的人:
对于其他浏览器,其驱动版本通常取决于浏览器版本,但对于IE驱动,版本取决于selenium版本!
我想强调这一点,因为它很重要,而且我没有发现答案中的任何地方都指出了这一点。直到最近我也不知道这件事。今天(创建这个post时),selenium package from public python repository is on version 3.141.0, but selenium.dev page建议下载32位IE驱动3.150.1版本;这两个版本不完全兼容,所以我遇到了同样的问题(但是,出于不同的原因)。
不幸的是,这个帖子的一些建议,即将 RequireWindowFocus
设置为 True
,解决了我打字慢的问题。我说不幸的是,因为我的测试一直不稳定,而且,作为奖励,浏览器 window 仍然在所有内容的前面并且在物理上移动鼠标光标点击,使我无法并行执行多个测试.
用与我的 selenium 包版本相匹配的旧版本替换最新稳定版本的驱动程序后,我的问题肯定得到了解决,我什至不需要弄乱 RequireWindowFocus
(以及我所做的所有其他选项不想)了。
继续测试!