it-roy-ru.com

geckodriver.exe отсутствует в текущем каталоге или переменной пути, Selenium 2.53.1 + Firefox 48 + Selenium 3 Beta

Видел много вопросов, касающихся Selenium 2.53.1 и Firefox 47.0.1, но ни одного в отношении выпуска Selenium 3 Beta. Я пытаюсь использовать новые веб-драйверы Firefox gecko/marionette, но даже если у меня есть местоположение драйвера; Мой путь к среде, папка установки Firefox в программах и указание расположения диска в системной среде, он все равно будет работать неправильно.

Ошибка:

Geckodriver.exe не существует ни в текущем каталоге, ни в каталоге переменной среды PATH. Драйвер можно загрузить по адресу https://github.com/mozilla/geckodriver/releases .

С помощью:

  • Сервер Selenium 2.53.1
  • Firefox 48
  • Selenium 3 Beta DLLs
  • Окно 10

Пример кода 1

    using OpenQA.Selenium.Firefox;

    public static class FirefoxInitialise
    {
         public static IWebDriver Driver {get; set;}

         Driver = new FirefoxDriver();
    }

Также предпринята попытка ниже:

    using OpenQA.Selenium.Firefox;

    public static class FirefoxInitialise
    {
         public static IWebDriver Driver {get; set;}

         FirefoxDriverServices service = FirefoxDriverService.CreateDefaultService();
         service.FirefoxBinaryPath = @"C:\Program Files\Mozilla Firefox\firefox.exe";
         FirefoxOptions options = new FirefoxOptions();
         TimeSpan time = TimeSpan.FromSeconds(10);
         Driver = new FirefoxDriver(service, options, time);
    }

Любая помощь или понимание того, почему код все еще не может обнаружить этот драйвер, будет принята с благодарностью.

22
SeanS

Попробуйте поместить geckodriver.exe в ваш путь: C:\Users\Ваше имя\Documents\Visual Studio 2013\Проекты\seleniump\seleniump\bin\Debug

вы можете найти geckodriver.exe по этой ссылке:

https://github.com/mozilla/geckodriver/releases

25
vdus

Установите Selenium.Firefox.Webdriver NuGet.

Это скопирует geckodriver.exe в папку bin.

17
Hans Vonn

Это решение может помочь вам решить проблему: (хотя оно мне и помогло)

public class TestResult {

    private IWebDriver driver;
    private StringBuilder verificationErrors;
    private string baseURL;
    private bool acceptNextAlert = true;

    [TestInitialize]
    public void SetupTest() {
        FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"C:\geckodriver", "geckodriver.exe");
        service.Port = 64444;
        service.FirefoxBinaryPath = @"C:\Program Files (x86)\Firefox Developer Edition\firefox.exe";
        driver = new FirefoxDriver(service);
        baseURL = "http://localhost:49539";
        verificationErrors = new StringBuilder();
    }
}
7
Angus Wu

Если вы включили geckodriver.exe в проект и скопировали его в целевой каталог при компиляции, веб-драйвер будет работать так же, как и в предыдущих версиях. 

4
Chalmette

Это для тех, кто только начинает писать короткую версию ниже в этом посте :) Самый простой способ - сначала скачать все драйверы, какой браузер вы используете, и извлечь все драйверы, например, в. C:\Selenium\ там и перейдите к VisualStudio и отсюда добавьте Selenium packages, показанный на рисунках Нажмите здесь в консоли напишите этот код PM>Install-Package Selenium.WebDriver после этого скопируйте ваш каталог драйверов и из переменных вкладки поиска Windows введите и выберите (Изменить системное окружение и переменные) shown pic2 в этих окнах у вас будет вкладка advanced, расположенная ниже, нажмите Переменные среды .. . здесь у вас есть раздел System variables. найдите переменную PATH or Path. Будьте осторожны don't delete it!! следующий щелчок new - вставьте каталог драйверов и нажмите кнопку ОК всех windws, вот и все. перезапустите программу VS и нажмите ее. После этого вам не нужно добавлять путь директора в ваш конструктор, как 

IWebDriver driver2 = new InternetExplorerDriver(@"C:\Selenium"); 

Еще одна вещь, не забудьте импортировать файлы. 

using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;

Для более продвинутых ребят.

  1. Добавьте в папку Environment Path Yours каталог драйверов.
  2. VisualStudio установить Selenium с помощью диспетчера пакетов NuGet в режиме консоли или как вам нужно .

    PM> Install-Package Selenium.WebDriver

  3. перезагрузите VS.
1
Said

Я бы попробовал это:

  1. Во-первых, убедитесь, что ваш проект C # работает с той же версией .NET Framework, что и библиотеки Client Driver (когда вы загружаете их из Selenium HQ, вы должны увидеть версию платформы, на которой они основаны). У меня 3.5 и 4.0 на 15.09.2017, поэтому мне пришлось понизить мой проект C # до .NET 4.0, чтобы использовать библиотеки клиентских драйверов 4.0.

  2. В своем коде при создании службы драйверов Firefox убедитесь, что вы явно указали путь к файлу geckodriver.exe. Посмотрите, как я добавил параметр пути к вашему вызову FirefoxDriverService.CreateDefaultService:

    using OpenQA.Selenium.Firefox;
    
    public static class FirefoxInitialise
    {
      private static IWebDriver Driver{get; set;}
      public static IWebDriver Init()
      {
       // I'm assuming your geckodriver.exe is located there:
       // @"C:\MyGeckoDriverExePath\geckodriver.exe"
       FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"C:\MyGeckoDriverExePath\");
       service.FirefoxBinaryPath = @"C:\Program Files\Mozilla Firefox\firefox.exe"; // May not be necessary
       FirefoxOptions options = new FirefoxOptions();
       TimeSpan time = TimeSpan.FromSeconds(10);
       Driver = new FirefoxDriver(service, options, time);
       return Driver;
     }
    }
    

So you can use :

IWebDriver driver = FirefoxInitialise.Init();
1
Fabien Teulieres

Если у вас есть переменная среды исполняемого файла в пути, это, вероятно, означает, что у нее нет разрешения на доступ к ней. В качестве обходного пути попробуйте запустить Visual Studio от имени администратора.

Или вы можете переместить его куда-нибудь, чтобы у него было разрешение. Например:

var service = FirefoxDriverService.CreateDefaultService(@"D:\tmp\Binaries");
service.FirefoxBinaryPath = FirefoxBinary;

var options = new FirefoxOptions();
options.SetPreference("browser.private.browsing.autostart", true);

_driver = new FirefoxDriver(service, options, TimeSpan.FromSeconds(30));

Там я поместил двоичные файлы в D:\tmp\Binaries\ и указал его в коде, чтобы проверить там гекодривера.

0
Syakur Rahman

Я также продолжал получать эту ошибку, и единственное, что я мог сделать, чтобы окончательно ее исправить (не уверен, что это лучший ответ для всех, у кого есть эта проблема), было то, что я поместил geckodriver.exe в мой основной каталог библиотеки, а затем открыл webdriver.py:

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Selenium/webdriver/firefox/webdriver.py

нашел строку, где написано: executable_path="geckodriver", firefox_options=None,

и изменил его на:

executable_path="/Library/geckodriver", firefox_options=None

0
Milena Paz

Это решение работало для меня на VS2017. Просто скопировал geckodriver.exe в папку моего проекта следующим образом:

C:\Users\pedne\Desktop\C #\FirstSolution\FirstSolution\Bin\Debug

0
PrashantMP

У меня возникла проблема с Visual Studio 2017, когда сборка не удалась, потому что она искала несуществующий каталог для exec geckodriver. Я также добавил его с помощью менеджера пакетов Nuget. То, что я обнаружил, было в Visual Studio-> Project-> Properties-> Build, оно работает, если вы делаете сборку независимой от архитектуры: для платформы выбран Any CPU и либо оставьте другие флажки (предпочитают 32-битный, Allow unsafe code, Оптимизировать код) все непроверено или просто установлен флажок Предпочитаемый 32-разрядный (что по умолчанию в моей системе) . Кстати: мое приложение было консольным приложением .NET Framework 4.5.2

0
Scott Maretick