理解';无法执行本机交互:无法使用Firefox和Selenium Webdriver加载本机事件组件`

理解';无法执行本机交互:无法使用Firefox和Selenium Webdriver加载本机事件组件`,firefox,selenium,selenium-webdriver,Firefox,Selenium,Selenium Webdriver,很多时候,在Firefox上运行自动Selenium测试时,人们会遇到以下错误: Selenium::WebDriver::Error::InvalidElementStateError: Cannot perform native interaction: Could not load native events component.` 有人能帮我从技术上理解: 发生此错误的原因是什么 发布新的Selenium Webdriver版本如何解决这个问题 为什么它只出现在Firefox上,而不出

很多时候,在Firefox上运行自动Selenium测试时,人们会遇到以下错误:

Selenium::WebDriver::Error::InvalidElementStateError: Cannot perform native interaction: Could not load native events component.`
有人能帮我从技术上理解:

  • 发生此错误的原因是什么
  • 发布新的Selenium Webdriver版本如何解决这个问题
  • 为什么它只出现在Firefox上,而不出现在Chrome上

  • 默认情况下,在Windows上,Firefox驱动程序使用所谓的“本机事件”与元素交互。也就是说,鼠标和键盘的交互是使用操作系统级的机制来模拟的,而不是使用JavaScript来模拟交互的更常见但可能有限且不太准确的方法。在Firefox中,这需要加载从C++源编译的OS特定二进制库(.Windows上的.dll)。这些二进制库必须链接到Gecko SDK的特定版本,这意味着它们只能由特定版本的Firefox加载和使用

    由于支持每一个版本的Firefox都会大大增加驱动程序的容量,WebDriver团队限制了任何Selenium版本支持的版本数量。Firefox当前的支持策略是支持当前的Firefox版本、之前的Firefox版本、当前的Firefox扩展支持版本(ESR)和之前的ESR版本。请注意,所有版本都是在Selenium项目发布之日计算的

    由于新的Firefox版本涉及新的SDK,因此Selenium项目必须编译新的本机事件组件以支持它,并使用这些组件发布新的Selenium版本。该项目试图推动新版本尽可能接近新Firefox版本的发布,但由于这是一个完全自愿的项目,而且Mozilla可以(而且确实!)在没有警告的情况下将Gecko SDK从一个版本更改为另一个版本,因此Selenium更新有时会延迟


    另外两点:首先,Firefox驱动程序架构在这方面是独一无二的,所以在其他浏览器中不会出现这种行为。但需要注意的是,其他浏览器确实需要更新的驱动程序来处理更新的浏览器版本(参见chromedriver.exe)。其次,当FirefoxDriver2(也称为木偶网)由Mozilla完成并发布时,这种体系结构完全改变。木偶网的发布时间表由Mozilla决定,因此您必须与他们联系以获取相关信息。

    默认情况下,在Windows上,Firefox驱动程序使用所谓的“本机事件”与元素交互。也就是说,鼠标和键盘的交互是使用操作系统级的机制来模拟的,而不是使用JavaScript来模拟交互的更常见但可能有限且不太准确的方法。在Firefox中,这需要加载从C++源编译的OS特定二进制库(.Windows上的.dll)。这些二进制库必须链接到Gecko SDK的特定版本,这意味着它们只能由特定版本的Firefox加载和使用

    由于支持每一个版本的Firefox都会大大增加驱动程序的容量,WebDriver团队限制了任何Selenium版本支持的版本数量。Firefox当前的支持策略是支持当前的Firefox版本、之前的Firefox版本、当前的Firefox扩展支持版本(ESR)和之前的ESR版本。请注意,所有版本都是在Selenium项目发布之日计算的

    由于新的Firefox版本涉及新的SDK,因此Selenium项目必须编译新的本机事件组件以支持它,并使用这些组件发布新的Selenium版本。该项目试图推动新版本尽可能接近新Firefox版本的发布,但由于这是一个完全自愿的项目,而且Mozilla可以(而且确实!)在没有警告的情况下将Gecko SDK从一个版本更改为另一个版本,因此Selenium更新有时会延迟


    另外两点:首先,Firefox驱动程序架构在这方面是独一无二的,所以在其他浏览器中不会出现这种行为。但需要注意的是,其他浏览器确实需要更新的驱动程序来处理更新的浏览器版本(参见chromedriver.exe)。其次,当FirefoxDriver2(也称为木偶网)由Mozilla完成并发布时,这种体系结构完全改变。木偶网的发布时间表由Mozilla决定,因此您必须与他们联系以获取相关信息。

    感谢Jim提供了这么好的信息:)很好的解释。我从来没有听过这样的话。谢谢吉姆给我这么好的信息:)很好的解释。我从来没有听过这样的话。