如何通过 Facebook/php-webdriver 添加选项?

Vik*_*ikR 3 selenium selenium-chromedriver selenium-webdriver php-webdriver facebook-php-webdriver

我正在寻求向 Facebook/php-webdriver 实例添加选项。

这可以获取初始选项:

$options = \Facebook\WebDriver\Remote\DesiredCapabilities::chrome();
Run Code Online (Sandbox Code Playgroud)

现在我想添加额外的选项:

$options->setCapability("enablePassThrough", FALSE);
$options->setCapability("no-sandbox", TRUE);
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Call to undefined function setCapability()
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几种方法,但尚未找到如何做到这一点。

向 Facebook/php-webdriver 实例添加选项的正确方法是什么?

Deb*_*anB 5

setCapability()

setCapability()方法通过DesiredCapability()实例配置WebDriver实例的功能,如下所示:

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());
}
Run Code Online (Sandbox Code Playgroud)

--no-sandbox

-no-sandbox 参数可以通过实例添加,并且可以进一步添加到DesiredCapability()ChromeOptions()的实例,如下所示:

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

启用直通

enablePassThrough模式在Selenium Client v3.5.0中首次引入。enablePassThrough允许从测试的 RemoteWebDriver 通过网格集线器连接到网格节点,然后连接到 DriverService,然后连接到浏览器,以端到端使用相同的 WebDriver 协议(Json Wire 协议或 W3C 协议),无需转换。

可以通过使用参数启动独立服务器或网格节点来禁用enablePassThrough模式-enablePassThrough false

随着Selenium Client v3.9.0的发布和可用性,所有HTTP 通信都切换到OkHttpwebdriver.http.factory尽管您仍然可以通过将系统属性设置为 来将版本更改回 Apache HttpClient apache

同时,不再支持服务器的直通模式。

在这里您可以找到有关selenium服务器3.9.1不可用的enablePassThrough的详细讨论