Настройка service_args для phantomjs в selenium-webdriver для узла

#javascript #selenium-webdriver #phantomjs

#javascript #selenium-webdriver #phantomjs

Вопрос:

Мне нужно иметь возможность запускать phantomjs со следующим аргументом:

—игнорировать-ssl-ошибки= true

Страница, которую я тестирую, использует самоподписанный сертификат, поэтому мне нужен аргумент для открытия страницы. Я пытаюсь передать аргумент в webdriver, используя фрагмент ниже:

 capabilities = webdriver.Capabilities.phantomjs();
capabilities.set('service_args', '--ignore-ssl-errors=true');
driver = new webdriver.Builder().
    withCapabilities(capabilities).
    build();
  

Правильный ли способ передать service_args? Я на самом деле надеюсь, что нет, так как я не могу загрузить свою тестовую страницу. Я могу открыть страницу, выполнив:

 phantomjs --ignore-ssl-errors=true myTest.js
  

Вот код в myTest.js

 var page = new WebPage();
page.open('https://my.somefaketestpage.com/', function (status) {
        just_wait();
});

function just_wait() {
    setTimeout(function() {
            page.render('screenshot.png');
            phantom.exit();
    }, 2000);
}
  

Ответ №1:

Правильный ответ:

 caps = new DesiredCapabilities();
caps.setJavascriptEnabled(true);
caps.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, new String[] {"--web-security=no", "--ignore-ssl-errors=yes"});
driver = new PhantomJSDriver(caps);
  

описано здесь:https://github.com/detro/ghostdriver/issues/233

Ответ №2:

На случай, если кому-то это понадобится для facebook / php-webdriver аргументы CLI могут быть переданы PhantomJS следующим образом:

 $driver = RemoteWebDriver::create('http://localhost:4444/wd/hub', [
    WebDriverCapabilityType::BROWSER_NAME => WebDriverBrowserType::PHANTOMJS,
    WebDriverCapabilityType::PLATFORM     => WebDriverPlatform::ANY,
    'phantomjs.cli.args'                  => ['--ignore-ssl-errors=true']
]);
  

Ответ №3:

Читая это, я действительно запутался, поскольку принятый ответ находится на Java, а константы GhostDriver и прочее отсутствуют. Для тех, кто тоже в замешательстве, это сработало для меня:

 var webdriver = require('selenium-webdriver'),
    Capabilities = webdriver.Capabilities;

var capability = Capabilities
        .phantomjs()
        .set('phantomjs.cli.args', '--ignore-ssl-errors=true');

var driver = new webdriver
        .Builder()
        .withCapabilities(capability)
        .build();