我正在尝试向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实例添加选项的正确方法是什么?
答案 0 :(得分:1)
setCapability()
setCapability()
方法通过 DesiredCapabilities()实例为 WebDriver 实例配置 capabilities ,如下所示:
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()的实例中,如下所示:< / p>
$options = new ChromeOptions();
$options->addArguments(array('--no-sandbox'));
$capabilities = DesiredCapabilities::chrome();
$capabilities->setCapability(ChromeOptions::CAPABILITY, $options);
enablePassThrough
模式是Selenium Client v3.5.0中首次引入的。 enablePassThrough 允许测试的RemoteWebDriver通过网格集线器连接到网格节点,然后再连接到DriverService,然后再连接到浏览器,以使用相同的WebDriver协议(Json Wire Protocol或W3C)一个)没有翻译的端到端。
-enablePassThrough false
启动独立服务器或Grid节点,可以禁用enablePassThrough 模式。
随着Selenium Client v3.9.0的发布和可用性,所有 HTTP通信都已切换为 OkHttp 。尽管您仍然可以通过将webdriver.http.factory
系统属性设置为apache
来将版本改回Apache HttpClient。
服务器的直通模式同时被删除。
在这里您可以找到有关enablePassThrough not available for selenium server 3.9.1的详细讨论
答案 1 :(得分:0)
此语法在我的系统上有效:
$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
);
答案 2 :(得分:-1)
$options = new ChromeOptions();
$options->addArguments(array('--no-sandbox'));
$capabilities = DesiredCapabilities::chrome();
$capabilities->setCapability(ChromeOptions::CAPABILITY, $options);