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秒

  • 为什么IE打字这么慢
  • 有没有别的方法可以加快打字速度

  • 我的问题是驱动程序架构,通过下载并使用32位的驱动程序解决了这个问题

    要切换到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:

  • 开放式IE
  • 转到Internet选项→ 先进的→ 保安
  • 检查☑ 为增强保护模式启用64位进程
  • 单击应用并确定
  • 对于32位Web驱动程序:

  • 开放式IE
  • 转到Internet选项→ 先进的→ 保安
  • 取消勾选☐ 为增强保护模式启用64位进程
  • 单击应用并确定
  • 奇怪的是:

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

    我的设置: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后,它解决了问题

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

  • 转到Java compliance--下的project-->properties->Java编译器-->取消选择use compliance选项,将compile compliance级别更改为1.7,然后单击以应用
  • 它将工作得很顺利。

    对于IEServerDriver 3.14.0来说,它可以稍微加快键入速度

    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);