Драйвер Selenium Firefox - Невозможно загрузить FirefoxProfile из-за «DirectoryNotFoundException» - PullRequest
0 голосов
/ 21 сентября 2018

У меня установлена ​​последняя версия Firefox (32.0-разрядная версия 62.0), Selenium (3.14.0.0) и драйвер gecko (32-разрядная версия 0.22.0).У меня есть следующий код:

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.5bbc89e65ae54c058b27b70.web70. 70Профиль "папка не существует.

Я могу создать папку, вызвав следующий код:

firefoxProfile.WriteToDisk();

Однако я все равно получу ту же ошибку, только с другой «анонимной» папкой после запуска последней строкимой код.

Я могу обойти эту проблему, включив «UseLegacyImplementation», но это приводит к другим проблемам и не является оптимальным.что-то на Github , но это связано с тем, что профиль игнорируется, а не ошибается.

У меня был похожий код, работающий на старых версиях библиотеки и Firefox, по некоторым причинам, когдаЯ пытаюсь реализовать на другой машине все последние, с которыми сталкиваюсь, эту проблему.У кого-нибудь есть что-нибудь по этому поводу?

1 Ответ

0 голосов
/ 18 апреля 2019

Мне удалось воспроизвести вашу проблему, но я сделал следующее и избавился от нее.

  1. Я создал новый профиль в Firefox about:profiles -> Новый профиль Имя = TestUser

  2. Скопировал расположение этого профиля (корневой каталог) и использовал его при создании экземпляра 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, который согласно документации Удаляет файлы блокировки для профиля.

Я подозреваю, что вы забыли создать профиль и / или не указали правильный путь к нему.

...