Как добавить параметры через Facebook / php-webdriver? - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь добавить опции к экземпляру Facebook / php-webdriver.

Это работает, чтобы получить начальные опции:

$options = \Facebook\WebDriver\Remote\DesiredCapabilities::chrome();

Теперь я хотел бы добавитьдополнительные параметры:

$options.setCapability("enablePassThrough", FALSE);
$options.setCapability("no-sandbox", TRUE);

Я получаю сообщение об ошибке:

Call to undefined function setCapability()

Я пробовал несколько подходов, но еще не нашел, как это сделать.

Как правильно добавить параметры в экземпляр Facebook / php-webdriver?

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Этот синтаксис работает в моей системе:

    $options = new \Facebook\WebDriver\Chrome\ChromeOptions();
    $options->addArguments(array('--no-sandbox'));
    $capabilities = \Facebook\WebDriver\Remote\DesiredCapabilities::chrome();
    $capabilities->setCapability(\Facebook\WebDriver\Chrome\ChromeOptions::CAPABILITY, $options);
    $seleniumDriver = \Facebook\WebDriver\Remote\RemoteWebDriver::create(
        $host,
        $capabilities,
        5000
    );
0 голосов
/ 24 октября 2018

setCapability()

setCapability() метод конфигурирует экземпляр WebDriver с возможностями через экземпляриз DesiredCapabilities () следующим образом:

public function testShouldProvideAccessToCapabilitiesUsingSettersAndGetters()
{
    $capabilities = new DesiredCapabilities();
    // generic capability setter
    $capabilities->setCapability('custom', 1337);
    // specific setters
    $capabilities->setBrowserName(WebDriverBrowserType::CHROME);
    $capabilities->setPlatform(WebDriverPlatform::LINUX);
    $capabilities->setVersion(333);
    $this->assertSame(1337, $capabilities->getCapability('custom'));
    $this->assertSame(WebDriverBrowserType::CHROME, $capabilities->getBrowserName());
    $this->assertSame(WebDriverPlatform::LINUX, $capabilities->getPlatform());
    $this->assertSame(333, $capabilities->getVersion());
}

--no-sandbox

-no-sandbox аргумент может быть добавлен через экземпляр ChromeOptions(), а также может быть добавлен к экземпляру DesiredCapabilities () следующим образом:

$options = new ChromeOptions();
$options->addArguments(array('--no-sandbox'));
$capabilities = DesiredCapabilities::chrome();
$capabilities->setCapability(ChromeOptions::CAPABILITY, $options);

enablePassThrough *Режим 1036 * enablePassThrough был впервые введен в Selenium Client v3.5.0 . enablePassThrough разрешало подключение от RemoteWebDriver вашего теста через Grid Hub к узлу Grid, а затем к DriverService, а затем к браузеру, чтобы использовать тот же протокол WebDriver (протокол Json Wire Protocol или W3C).) конец в конец без перевода. enablePassThrough Режим можно было отключить, запустив автономный сервер или узел Grid с аргументом -enablePassThrough false С выпуском и доступностьюиз Selenium Client v3.9.0 все HTTP-связь была переключена на OkHttp .Хотя вы все равно можете изменить версию обратно на Apache HttpClient, установив системное свойство webdriver.http.factory на apache. Одновременно поддержка режима passthrough для сервера была упал . Здесь вы можете найти подробное обсуждение enablePassThrough недоступен для сервера селен 3.9.1

...