Internet explorer Selenium WebDriver在IE浏览器的文本字段中键入速度非常慢
我正在使用Internet explorer Selenium WebDriver在IE浏览器的文本字段中键入速度非常慢,internet-explorer,selenium,selenium-webdriver,Internet Explorer,Selenium,Selenium Webdriver,我正在使用Selenium 2.43.1IE 11浏览器上运行我的一个脚本 当脚本使用以下命令在文本字段中键入时: element.sendKeys("string"); 在IE浏览器中,我可以看到在文本字段中键入了字符串的一个字符,在键入下一个字符之前,它会等待1-2秒。输入一个字符需要1-2秒 为什么IE打字这么慢 有没有别的方法可以加快打字速度 我的问题是驱动程序架构,通过下载并使用32位的驱动程序解决了这个问题 要切换到32位,您必须执行以下操作 从下载32位驱动程序服务 使用 Int
Selenium 2.43.1
IE 11浏览器上运行我的一个脚本
当脚本使用以下命令在文本字段中键入时:
element.sendKeys("string");
在IE浏览器中,我可以看到在文本字段中键入了字符串的一个字符,在键入下一个字符之前,它会等待1-2秒。输入一个字符需要1-2秒
我的问题是驱动程序架构,通过下载并使用32位的驱动程序解决了这个问题 要切换到32位,您必须执行以下操作
InternetExplorerDriverService
类,具有32位驱动程序的路径
服务
InternetExplorerDriver ieDiver=新的InternetExplorerDriver(“32位浏览器驱动程序的路径”)代码>
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))
帮助我解决问题的线索
这可能是运行测试的机器的问题。如果你在使用计算机时遇到一般的滞后,那么这种情况就会发生 有没有其他方法可以加快打字速度
当然,您可以创建一个自定义方法来清除文本,然后使用JavaScript填充字段。(请注意,这样做可能无法处理诸如“键入前”和“键入时的建议”之类的问题)我在使用64位版本的IEDriverServer时也遇到了同样的问题。更改为32位,工作正常 资料来源:
我以前也遇到过同样的问题。你可以试试看 Internet选项->连接->局域网设置->取消勾选自动检测设置
希望这有帮助。对我来说,它与64位版本的IEDriverServer一起工作。我添加了属性requireWindowFocus和“true”值:
我使用的是2.47版Selenium/IE驱动程序,您可以更改为32位版本,但如果需要64位,则可以尝试以下解决方案:
- Internet选项->安全->选中所有区域的“启用保护模式”
- 转到高级->安全->选中“启用增强保护模式”
这将导致不再在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\u x64\u 2.53.1
)
我切换到
IEDriverServer\u Win32\u 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);
我不确定这是否有其他副作用。禁用本机\u事件解决了我的问题
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.NATIVE_EVENTS, false);
driver = new InternetExplorerDriver(capabilities);
您可以更改为32位版本,与64位相比速度更快。对于64位WebDriver:
- 无论是否激活增强保护模式,该设置都是必要的
- 除了对话框中的文字外,没有必要重新启动计算机
我的设置:Windows 10,IE 11,everything 64位,Selenium 3.4,而不是WebEEElement.send.keys,我使用了Actions对象和sendKeys方法。这很有魅力。我在Windowsx64上的IE11也遇到了同样的问题。我使用的是64位版本的IEDriverServer.exe(即带selenium-3.7.0的driver-3.7.0)
在我更改为32位版本的IEDriverServer.exe后,它解决了问题为了提高发送键功能的速度,可以执行以下步骤:-
WebDriver browser;
InternetExplorerOptions options = new InternetExplorerOptions();
options.disableNativeEvents();
options.requireWindowFocus();
browser = new InternetExplorerDriver(options);
DesiredCapabilities方法已弃用,并且
options.IntroductionInstabilityBygnoringProtectedModeSettings=true代码>和选项。RequireWindowFocus=true代码>不再可用。只是一些无法解决原始问题的备注,但可能会帮助今天有类似问题的人:
对于其他浏览器,其驱动程序版本通常取决于浏览器版本,但对于IE驱动程序,版本取决于selenium版本强>
我想强调这一点,因为这一点很重要,我在答案中没有发现有人指出这一点。直到最近我才知道这件事。今天(在创建本文时),是3.141.0版,但建议下载32位IE驱动程序3.150.1版;这两个版本不完全兼容,因此我遇到了相同的问题(但是,原因不同)
不幸的是,这个线程的一些建议,即将RequireWindowFocus
设置为True
,解决了我打字速度慢的问题。我说不幸的是,因为我的测试一直不稳定,而且,作为奖励,浏览器窗口仍然在所有东西的前面,并且在点击时实际移动鼠标光标,使我无法执行multiple
WebDriver browser;
InternetExplorerOptions options = new InternetExplorerOptions();
options.disableNativeEvents();
options.requireWindowFocus();
browser = new InternetExplorerDriver(options);