Selenium UseLegacyImplementation False WebDriverException:ReferenceError:$未定义

时间:2016-12-16 21:01:54

标签: c# jquery selenium selenium-webdriver geckodriver

我刚刚通过Selenium Test Project进行升级,以使用2.53.0版本的新版本3.0.1。我现在正在使用Geckodriver v0.11.1,目前我正在测试Firefox,即版本46.0.1。

在升级之前,我的代码看起来像这样:

driver.Navigate().GoToUrl(DefaultBaseURL);
driver.ExecuteScript("$('#" + XXXX + "').val(\"" + XXXX + "\");");

升级后,第二行现在失败,出现以下错误:

  

WebDriverException:ReferenceError:$未定义

如果我启用" UseLegacyImplementation"我可以再次工作。根据Selenium的网站,这是"indicating whether to use the legacy driver implementation."所以,那里不是很多细节......但是当我启用它时,它似乎以与2.53.0相同的方式运行。

我对这个问题的第一个猜测是它的时间相关,类似于提到的帖子here。但即使我在两条线之间放置大量等待时间,最终结果总是相同的。似乎新的selenium库无法检测到页面已经加载了jQuery。

有没有办法在Selenium 3.0.1中调用JQuery依赖脚本,而不启用" UseLegacyImplementation"?

1 个答案:

答案 0 :(得分:0)

UseLegacyImplementation属性告诉.NET绑定使用由Selenium项目本身开发和维护的基于浏览器扩展的传统驱动程序实现。换句话说,将其设置为true会告诉绑定使用geckodriver。从2.x到3.x的更改之一是此属性的默认值已更改。在3.x中,它默认尝试使用geckodriver。

如果你正在使用geckodriver,你会发现使用更高版本的Firefox可以获得更好的体验。你可能遇到的可能是geckodriver的一个错误,已经在以后的浏览器版本中得到修复。如果你想继续使用Firefox 46,我建议你继续使用传统的Selenium项目实现(UseLegacyImplementation = true)。如果你想使用geckodriver,你应该转移到更新版本的Firefox。