0

我刚刚通过 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 的网站,这是“指示是否使用旧版驱动程序实现”。所以,那里没有很多细节......但是当我启用它时,它似乎以与 2.53.0 相同的方式运行。

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

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

4

1 回答 1

0

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

如果您使用 geckodriver,您会发现使用更高版本的 Firefox 体验会更好。您可能遇到的可能是 geckodriver 的错误,该错误已在更高版本的浏览器中修复。如果您想继续使用 Firefox 46 ,我建议您继续使用旧的 Selenium 项目实现 ( UseLegacyImplementation = true)。如果您想使用 geckodriver,您应该迁移到更新版本的 Firefox。

于 2016-12-18T03:00:09.750 回答