behat-chrome/chrome-mink-driver

此包已被弃用,不再维护。作者建议使用 dmore/chrome-mink-driver 包。

无selenium控制chrome的Mink驱动程序


README

请继续通过Packagist使用dmore/chrome-mink-driver

有关详细信息,请参阅 https://gitlab.com/behat-chrome/chrome-mink-driver/-/issues/121

简而言之:我为behat-chrome/*命名空间中的该问题创建了占位符Packagist包。DMore和我决定保留原始的Packagist名称,但似乎有少数人注意到了新的Packagist名称。

Gitlab项目仅移动到 https://gitlab.com/behat-chrome/

撤销composer更改

composer remove behat-chrome/behat-chrome-extension behat-chrome/chrome-mink-driver
composer require dmore/behat-chrome-extension dmore/chrome-mink-driver

现在,Packagist上的behat-chrome/包已被标记为弃用,并指向dmore/

README继续

无selenium开销控制chrome的Mink驱动程序。

它通过HTTP和WebSockets直接与chrome通信,这使得它至少比使用selenium的chrome快两倍。

对于chrome 59+,它支持无头模式,消除了安装显示服务器的需要及其开销。

此驱动程序针对1800个场景和19000个步骤的behat套件进行了测试和基准测试。它可以在不到18分钟内成功运行chrome 60无头。

同一套件针对chrome 58、xvfb和selenium的运行需要约60分钟。

安装

composer require dmore/chrome-mink-driver

要求

  • 运行远程调试的Google chrome或chromium

示例

google-chrome-stable --remote-debugging-address=0.0.0.0 --remote-debugging-port=9222

或无头(59+)

google-chrome-unstable --disable-gpu --headless --remote-debugging-address=0.0.0.0 --remote-debugging-port=9222

官方docker镜像包含运行无头的chrome 60。

有关完整工作的示例,请参阅 https://gitlab.com/DMore/behat-chrome-skeleton

使用方法

use Behat\Mink\Mink;
use Behat\Mink\Session;
use DMore\ChromeDriver\ChromeDriver;

$mink = new Mink(array(
    'browser' => new Session(new ChromeDriver('http://localhost:9222', null, 'http://www.google.com'))
));

从Chrome 62+开始,有实验选项允许文件下载,可以通过传递给ChromeDriver的选项触发。

选项
downloadBehaviorallow, default, deny
downloadPath例如:/tmp/ (/tmp/是默认值

使用方法

use Behat\Mink\Mink;
use Behat\Mink\Session;
use DMore\ChromeDriver\ChromeDriver;

use Selenium\Client as SeleniumClient;

$mink = new Mink(array(
    'chrome' => new Session(new ChromeDriver('http://localhost:9222', null, 'http://www.google.com', ['downloadBehavior' => 'allow', 'downloadPath' => '/tmp/'])),
));

除了上述下载选项外,还可以提供以下选项

选项描述
socketTimeoutint,默认:10秒的连接超时
domWaitTimeoutint,默认:3000DOM准备等待超时(毫秒)

渲染PDF和屏幕截图

尽管有Mink功能,但驱动程序支持打印PDF页面或捕获屏幕截图。

使用方法

use Behat\Mink\Mink;
use Behat\Mink\Session;
use DMore\ChromeDriver\ChromeDriver;

$mink = new Mink(array(
    'browser' => new Session(new ChromeDriver('http://localhost:9222', null, 'http://www.google.com'))
));

// set the default session name
$mink->setDefaultSessionName('browser');

// visit a page
$mink->getSession()->visit('https://gitlab.com/DMore/chrome-mink-driver/blob/master/README.md');

/** @var ChromeDriver $driver */
$driver = $mink->getSession()->getDriver();

$driver->printToPdf('/tmp/readme.pdf');

可用选项在此处记录: https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-printToPDF

您可以使用captueScreenshot方法捕获屏幕截图。选项在此处记录。

请注意,建议使用禁用扩展标志启动Chrome,例如

google-chrome-stable --disable-gpu --headless --remote-debugging-address=0.0.0.0 --remote-debugging-port=9222 --window-size="1920,1080" --disable-extensions

Behat

如果您想使用此驱动程序与Behat一起使用,请参阅 Behat扩展

贡献

我们鼓励您fork此存储库并贡献您的改进。

有关说明,请参阅 贡献指南