运行 Selenium 如何在 PHP 中无头化?

How do you run Selenium headless in PHP?

我们希望 运行 我们的 Selenium 测试以及我们构建脚本中的其他单元测试,但考虑到构建 运行 在 Jenkins 上进行,即 运行作为一项服务,测试需要 运行 无头。我们的 Selenium 测试是用 PHP 编写的,到目前为止我所看到的一切似乎都适用于 JavaScript 或 Python。

有什么方法可以让我们 运行 我们的 PHP Selenium 无头测试(最好使用与未 运行 无头时相同的驱动程序,以便我们可以检测特定浏览器的问题)?

在 php-webdriver 文档中找到:

use Facebook\WebDriver\Remote\DesiredCapabilities;

$desiredCapabilities = DesiredCapabilities::firefox();
    .
    .
    .
// Run headless firefox
$desiredCapabilities->setCapability('moz:firefoxOptions', ['args' => ['-headless']]);

$driver = RemoteWebDriver::create($host, $desiredCapabilities);

这已在 php-webdriver 1.11.0 (2021-05-03) 中得到改进。

开始无头Chrome

$chromeOptions = new ChromeOptions();
$chromeOptions->addArguments(['--headless']);

$capabilities = DesiredCapabilities::chrome();
$capabilities->setCapability(ChromeOptions::CAPABILITY_W3C, $chromeOptions);

// Start the browser with $capabilities
// A) When using RemoteWebDriver::create()
$driver = RemoteWebDriver::create($serverUrl, $capabilities);
// B) When using ChromeDriver::start to start local Chromedriver
$driver = ChromeDriver::start($capabilities);

请参阅 php-webdriver wiki 文章 more Chrome examples

启动无头 Firefox

$firefoxOptions = new FirefoxOptions();
$firefoxOptions->addArguments(['-headless']);

$capabilities = DesiredCapabilities::firefox();
$capabilities->setCapability(FirefoxOptions::CAPABILITY, $firefoxOptions);

// Start the browser with $capabilities
// A) When using RemoteWebDriver::create()
$driver = RemoteWebDriver::create($serverUrl, $capabilities);
// B) When using FirefoxDriver::start to start local Geckodriver
$driver = FirefoxDriver::start($capabilities);

请参阅 php-webdriver wiki 文章 more Firefox examples