如何在 PHP 中运行 Selenium headless?

Rob*_*obH 3 php selenium headless-browser selenium-webdriver geckodriver

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

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

Ond*_*lda 6

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

有关更多 Chrome 示例,请参阅 php-webdriver wiki 文章。

启动无头 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);
Run Code Online (Sandbox Code Playgroud)

有关更多 Firefox 示例,请参阅 php-webdriver wiki 文章。