Настройка PhantomJSOptions.AddAdditionalCapability для ссылки на локальную копию ghostdriver

Кажется, существует проблема с ghostdriver в phantomjs, когда при сбое HTTP-вызова после нажатия кнопки происходит сбой всего.

https://github.com/detro/ghostdriver/issues/202#issuecomment-19808784

Проблема исправлена ​​и находится в основной ветке. Даны инструкции о том, как ссылаться на новые файлы и не использовать драйвер-призрак, включенный в фантомные файлы.

Java находится здесь: https://github.com/detro/ghostdriver/issues/243

и, кажется, есть значение

  PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY

но этого нет в С#

так что пробовал

  var opts = new PhantomJSOptions(); 
  opts.AddAdditionalCapability("phantomjs.ghostdriver.path.property", "c:\\path\\src\\main.js");

но не идет, вывод в фантомах по-прежнему показывает старую версию


EDIT1: это отличается от пути к phantomJS, который можно установить

 PhantomJSDriverService.CreateDefaultService("c:\path\to\phantomjs.exe")

Я пытаюсь сказать phantomjs использовать локальную версию Ghostdriver, а не Ghostdriver, включенный в сам phantomjs.


EDIT2: Итак, копайтесь в файлах кода Java здесь https://github.com/detro/ghostdriver/blob/master/binding/java/src/main/java/org/openqa/selenium/phantomjs/PhantomJSDriverService.java

Я нашел код, который устанавливает статическую строку Java

 public static final String PHANTOMJS_GHOSTDRIVER_PATH_PROPERTY = "phantomjs.ghostdriver.path";

что означает, что я неправильно установил это выше, но все же это не работает, когда исправлено

var opts = new PhantomJSOptions(); 
opts.AddAdditionalCapability("phantomjs.ghostdriver.path", "c:\\path\\src\\main.js");

хоть и теплее.....


person Martin    schedule 17.07.2013    source источник
comment
поэтому после изучения источника версий PhantomJSDriverService для .net и java я не думаю, что это возможно. Это невозможно в .net. Невозможно установить путь к призрачному драйверу. Мне удалось взломать что-то вместе в коде, только чтобы узнать, что я взламывал старый код веб-драйвера, который потерпел неудачу так же, как этот: ghostdriver-path-property" title="настройка свойства пути phantomjsdriverservice phantomjs ghostdriver"> stackoverflow.com/questions/17613536/ Решение заключается в обновлении до 2.3.3. В настоящее время загружаю репозиторий GIT для селена, но при размере около 2 ГБ это займет у меня несколько часов.   -  person Martin    schedule 17.07.2013


Ответы (2)


Вы правы, в выпущенной в настоящее время бинарной версии привязок .NET сделать это невозможно. Однако только что внесенное изменение позволяет это сделать. В привязках .NET код будет выглядеть следующим образом:

var service = PhantomJSDriverService.CreateDefaultService(@"path\to\phantomjs.exe");
service.GhostDriverPath = @"path\to\ghostdriver\main.js";

var driver = new PhantomJSDriver(service);

Различие между тем, что задается через PhantomJSDriverService, и тем, что задается через PhantomJSOptions, можно резюмировать следующим образом. Если параметр является аргументом командной строки для передачи в PhantomJS.exe, его следует установить через службу; если это вариант действия GhostDriver, он должен быть установлен через класс параметров.

person JimEvans    schedule 17.07.2013
comment
Только что докачал исходник ранее и добавил что-то похожее. Думаю, мне лучше снова начать загрузку и надеюсь, что к утру она будет готова :) Спасибо, Джим. - person Martin; 18.07.2013
comment
Первоначальный git clone болезненный, но последующие рывки, как правило, довольно быстрые. :) - person JimEvans; 18.07.2013
comment
Подтверждено как рабочее. Спасибо. Но в этой сборке игнорируется service.proxy. Но мы расследуем это и опубликуем на доске проекта об этом. - person Martin; 18.07.2013

У вас есть как минимум два способа указать путь выполнения phantomjs.

Использовать статический метод в PhantomJSDriverService

var driver = new PhantomJSDriver(PhantomJSDriverService.CreateDefaultService("PHANTOMJSPATHHERE"));

Используйте соответствующий конструктор PhantomJSDriver (принимает строку)

var driver = new PhantomJSDriver("PHANTOMJSPATHHERE");
person Cybermaxs    schedule 17.07.2013
comment
К сожалению, это не работает. Я считаю, что это указать путь к phantonjs.exe. Я пытаюсь установить путь к ghostdriver \src\main.js, используя .Net-эквивалент Java: phantomjs.ghostdriver.path.property - person Martin; 17.07.2013
comment
отредактировали исходный вопрос, чтобы попытаться очистить его. - person Martin; 17.07.2013