c # Selenium 2.53 переходит на драйвер марионетки после обновления Firefox до 47

Я пытаюсь перейти к обновленной автоматизации веб-браузера Firefox с помощью селена. Кажется, что селену для продолжения работы нужен драйвер марионетки. Я следовал инструкциям, данным разработчиками,

  1. скачал драйвер
  2. переименовал его в wires.exe

В следующем коде не удалось правильно установить PATH для пользовательского пути.

System.Environment.SetEnvironmentVariable("webdriver.gecko.driver", "@C:\DOWNLOADS\wires.exe")

поэтому я добавил wires.exe в папку debug\bin, после чего wire.exe заработал правильно, но я получил следующую ошибку

Обнаружено исключение System.InvalidOperationException Сообщение=сущность не найдена Источник=WebDriver

это код, который я использую для запуска webdriver

FirefoxOptions option1 = new FirefoxOptions();
option1.IsMarionette = true;
option1.AddAdditionalCapability("marionette", true);
driver = new FirefoxDriver(option1);

person InspiredX3    schedule 11.06.2016    source источник


Ответы (3)


Я тоже получил ошибку "Объект не найден" при использовании FirefoxDriver(new FirefoxOptions()). Похоже, он ищет файл firefox.exe в папке C:\Program Files (x86)\Nightly и не находит его. Я нашел это работающим:

FirefoxDriverService service = FirefoxDriverService.CreateDefaultService();
service.FirefoxBinaryPath = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";
IWebDriver driver = new FirefoxDriver(service);
person Charles Cartwright    schedule 14.06.2016
comment
Отлично, это работает для меня, но можно ли создать драйвер марионетки, как показано выше, с помощью firefoxprofile? Я не вижу возможности создать драйвер со службой и профилем в качестве входных данных? - person swathi; 29.06.2016

Я пытаюсь с этим, и он работает:

  1. Установить FirefoxDevEdition
  2. Скачать geckodriver.exe

FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"C:\Users\jmalpartida\Downloads\geckodriver-v0.8.0-win32", "geckodriver.exe");
service.Port = 64444;
service.FirefoxBinaryPath = @"C:\Program Files (x86)\Firefox Developer Edition\firefox.exe";
IWebDriver driver = new FirefoxDriver(service);
person JUVER MALPARTIDA    schedule 15.06.2016

Прежде всего, вам нужно добавить драйвер в системный путь, а не как переменную env. Во-вторых, вам нужно установить флаг в желаемой возможности, а не в опции Firefox. См.: Marionette Webdriver

Как таковой для удаленного веб-драйвера:

DesiredCapabilities capabilities = DesiredCapabilities.Firefox();  
capabilities.SetCapability("marionette", true); 
var driver = new RemoteWebDriver(capabilities); 

Чтобы добавить веб-драйвер в ваш путь Windows< /а>:

Самый простой способ — открыть меню «Пуск» > выполнить поиск среды > открыть редактирование системных переменных среды > щелкнуть переменные среды > выполнить поиск в списке «Путь» > щелкнуть «Изменить» > добавить ;C:\path\to\webdriver\location\wires.exe в конец и нажать «Сохранить».

Для ваших локальных (не веб-драйверов) тестов вы правы, вы можете запустить свой веб-драйвер, используя следующее:

var driver = new FirefoxDriver(new FirefoxOptions());

Вы не должны использовать

option1.IsMarionette = true; option1.AddAdditionalCapability("marionette", true);

Если вы правильно установили путь к драйверу в переменной среды пути.

person Mobrockers    schedule 12.06.2016
comment
я должен использовать Remotewebdriver? Существует возможность просто обновиться на сайте, который вы упомянули. Обновление ваших тестов для использования Marionette, но только простая строка кода, аналогичная той, которую я использовал. Кстати, драйвер, который я скачал, представляет собой исполняемый файл, который я переименовал в файл wires.exe. Когда вы говорите добавить драйвер в системный путь, вы имеете в виду что-то вроде C:\Windows, я прав? - person InspiredX3; 13.06.2016
comment
Я пробовал это, не работает, я все еще получаю ошибку объекта, не найденного - person johnstaveley; 14.06.2016