我拥有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中使用过类似的代码,由于某些原因,当我尝试在另一台机器上实现所有最新版本时,都会遇到此问题。有人对此有任何意见吗?
答案 0 :(得分:2)
我设法重现了您的问题,但进行了以下操作并消除了它。
我从Firefox about:profiles
->新配置文件中创建了新的配置文件名称 = TestUser
复制了此配置文件的位置(根目录),并在创建FirefoxProfile
实例时使用了它
var firefoxProfile = new FirefoxProfile(@"C:\Users\[user]\AppData\Roaming\Mozilla\Firefox\Profiles\67fkrqcg.TestUser");
FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"C:\geckodriver-v0.22.0-win32", "geckodriver.exe");
service.FirefoxBinaryPath = @"C:\Program Files\Mozilla Firefox\firefox.exe";
var driver = new FirefoxDriver(service, new FirefoxOptions
{
BrowserExecutableLocation = @"C:\Program Files\Mozilla Firefox\firefox.exe",
Profile = firefoxProfile,
UseLegacyImplementation = false
},
new TimeSpan(0, 1, 30));
由于调用方法DeleteLockFiles
(根据documentation 删除配置文件的锁定文件)而引发了错误。
我怀疑您忘记了创建配置文件和/或未指定正确的路径。