0

我正在寻求向 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 实例添加选项的正确方法是什么?

4

3 回答 3

2

setCapability()

setCapability()方法通过DesiredCapabilities()的实例为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());
}

--no-sandbox

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

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

启用直通

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

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

随着Selenium Client v3.9.0的发布和可用性,所有HTTP 通信都切换到OkHttp。尽管您仍然可以通过将webdriver.http.factory系统属性设置为apache.

同时放弃了对服务器直通模式的支持。

在这里你可以找到关于enablePassThrough not available for selenium server 3.9.1的详细讨论

于 2018-10-24T10:49:10.067 回答
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
    );
于 2018-10-24T21:24:37.597 回答
-1
$options = new ChromeOptions();
$options->addArguments(array('--no-sandbox'));
$capabilities = DesiredCapabilities::chrome();
$capabilities->setCapability(ChromeOptions::CAPABILITY, $options);
于 2020-12-02T23:44:12.140 回答