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

Я пытаюсь добавить параметры в экземпляр 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 ответа

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

enablePassThrough Режим был впервые введен в Selenium Client v3.5.0. enablePassThrough разрешало окончание соединения без соединения между удаленным тестовым тестом RemoteWebDriver, через Grid Hub, Grid Node и вплоть до DriverService, а затем в браузер для использования одного и того же протокола WebDriver (Json Wire Protocol или W3C).,

Режим enablePassThrough можно было отключить, запустив автономный сервер или узел Grid с аргументом -enablePassThrough false

С выпуском и доступностью Selenium Client v3.9.0 вся HTTP-связь была переключена на OkHttp. Хотя вы все равно можете изменить версию обратно на Apache HttpClient, установив webdriver.http.factory системное свойство для apache,

Одновременно была прекращена поддержка режима сквозного доступа для сервера.

Здесь вы можете найти подробное обсуждение enablePassThrough, недоступное для Селена Server 3.9.1

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

    $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
    );
$options = new ChromeOptions();
$options->addArguments(array('--no-sandbox'));
$capabilities = DesiredCapabilities::chrome();
$capabilities->setCapability(ChromeOptions::CAPABILITY, $options);