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

时间:2018-10-23 23:22:46

标签: selenium selenium-webdriver selenium-chromedriver facebook-php-webdriver 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实例添加选项的正确方法是什么?

3 个答案:

答案 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

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);