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

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

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

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

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

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

System.InvalidOperationException было обнаружено Сообщение = объект не найден Source = WebDriver

это код, который я использую для запуска веб-драйвера

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

Ответы на вопрос(3)

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

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

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);

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

 johnstaveley14 июн. 2016 г., 14:58
Я пробовал это, не работает, я все еще получаю ошибку не найден
  InspiredX313 июн. 2016 г., 12:27
я должен использовать Remotewebdriver? Есть возможность просто обновить на сайте, который вы упомянули «Обновление ваших тестов для использования Marionette», но только простая строка кода, которая похожа на ту, которую я использовал. Между прочим, драйвер, который я скачал, является исполняемым файлом, который я переименовал в файл wire.exe. Когда вы говорите добавить драйвер в системный путь, вы имеете в виду что-то вроде "C: \ Windows", я прав?

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

Установите FirefoxDevEditionСкачать 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);
Решение Вопроса

Я тоже получил«Объект не найден» ошибка при использовании FirefoxDriver (новый 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);
 swathi29 июн. 2016 г., 01:32
Отлично, это работает для меня, но возможно ли создать драйвер марионетки, как показано выше, с помощью firefoxprofile? Я не вижу никакой возможности создать драйвер с сервисом и профилем в качестве входных данных?

Ваш ответ на вопрос