Как добавить параметры через 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);