【发布时间】:2019-02-26 02:16:42
【问题描述】:
我有最新版本的 Firefox(62.0 32 位)、Selenium(3.14.0.0)和 gecko 驱动程序(0.22.0 32 位)。我的代码如下:
var firefoxProfile = new FirefoxProfile("XXX");
FirefoxDriverService service =
FirefoxDriverService.CreateDefaultService("XXX", "geckodriver.exe");
service.FirefoxBinaryPath = "XXX";
driver = new FirefoxDriver(service, new FirefoxOptions {
BrowserExecutableLocation = "XXX",
Profile = firefoxProfile,
UseLegacyImplementation = false },
new TimeSpan(0, 1, 30));
但是最后一行由于以下错误而失败:
System.IO.DirectoryNotFoundException: '找不到一部分 小路 'C:\Users\XXX\AppData\Local\Temp\anonymous.5bbc89e65ae54c058b27b9027039414b.webdriver-profile.parentlock'。'
当您查看目录时,“anonymous.5bbc89e65ae54c058b27b9027039414b.webdriver-profile”文件夹不存在。
我可以通过调用以下代码来生成一个文件夹:
firefoxProfile.WriteToDisk();
但是我仍然会遇到同样的错误,只是在运行我的代码的最后一行后使用了不同的“匿名”文件夹。
我可以通过启用“UseLegacyImplementation”来解决这个问题,但这会引入其他问题并且不是最佳的。
环顾四周,我没有看到任何地方引用了这条消息,Github 上引用了一些东西,但它是指配置文件被忽略,而不是错误。
我在旧版本的库和 firefox 上也有类似的代码,由于某种原因,当我尝试在另一台最新版本的机器上实现时,我遇到了这个问题。有人对此有意见吗?
【问题讨论】:
-
我注意到,当您实例化一个新的 FireFoxDriver 对象时,您使用的是 FireFoxDriverService 作为第一个参数。我看到在本文档中使用 GeckoDriverService:seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/…。您是否尝试过使用 GeckoDriverService?
-
@RKelley 也许在 java 中,但我没有看到 c# library 中存在,不过这是一个好问题,“Selenium.WebDriver.GeckoDriver”可通过 NuGet 获得,我认为所有这些确实是将EXE复制到bin目录,检查包下的“驱动程序”文件夹证实了我的怀疑。 NuGet 包只是 EXE。不确定这在 c# 中是否可行。
-
很抱歉。我在 Java 世界里待得太久了。
标签: c# selenium firefox selenium-webdriver selenium-firefoxdriver