dmore / chrome-mink-driver
无需Selenium即可控制Chrome的Mink驱动程序
Requires
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- behat/mink: ^1.9
- phrity/websocket: ^1.7.0
Requires (Dev)
- mink/driver-testsuite: dev-master
- phpunit/phpunit: ^8.5.22 || ^9.5.11
- squizlabs/php_codesniffer: ^3.5
- dev-main
- 2.9.3
- 2.9.2
- 2.9.1
- 2.9.0
- 2.8.1
- 2.8.1-beta1
- 2.8.0
- 2.8.0-beta
- 2.7.0
- 2.6.4
- 2.6.3
- 2.6.2
- 2.6.1
- 2.6.0
- 2.5.0
- 2.4.3
- 2.4.2
- 2.4.1
- 2.4.0
- 2.3.1
- 2.3.0
- 2.2.0
- 2.1.1
- 2.1.0
- 2.0.1
- 2.0.0
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.1
- 1.0.0
- dev-154-mink-test-update
- dev-152-reset-close-windows
- dev-155-remote-chrome
- dev-153-php-versions
- dev-100-iframe-test2
- dev-developing-docs
- dev-151-configure-microwaits
- dev-150-configure-microwaits
- dev-undo-abdbe629
- dev-cs-100
- dev-semantic-release
- dev-chrome-hostname-devtools-access
- dev-lennardw-master-patch-36110
- dev-coding-standards
- dev-111-event-tests-and-fix
- dev-ci-fixes
- dev-new_client
- dev-fix-click
This package is auto-updated.
Last update: 2024-09-13 23:36:33 UTC
README
无需Selenium即可控制Chrome的Mink驱动程序。
它通过HTTP和WebSockets直接与Google 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
或无头(v59+)
google-chrome-unstable --disable-gpu --headless --remote-debugging-address=0.0.0.0 --remote-debugging-port=9222
建议使用--disable-extensions
标志启动Chrome。
查看https://gitlab.com/DMore/behat-chrome-skeleton以获取一个完全工作的示例。
贡献
欢迎贡献!使用问题队列和合并请求来提出更改。请参阅Gitlab文档了解如何使用Gitlab界面。
- 要报告问题(错误、功能请求等),请使用问题队列。
- 如果您报告的是一个潜在的安全问题,请在向项目报告问题时检查“此问题是机密的”。
- 要提出代码更改或问题的解决方案,请使用合并请求。
- 测试覆盖率在合并请求上执行。贡献应在可能的情况下扩展测试覆盖率并确保所有测试通过。
- 在合并请求上执行编码标准检查。贡献应保持编码标准。
测试
该项目有测试覆盖率,您可以使用以下命令执行。
测试执行需要一个配置为从minkphp/driver-testsuite提供固定值的web服务器。这是由相关behat-chrome/docker-chrome-headless项目提供的Docker镜像提供的。执行的测试既包括针对此驱动程序特定的测试,也包括来自mink/driver-testsuite的更全面的测试套件,该测试套件是确保Mink驱动程序实现之间一致性的通用测试套件。
使用 make
命令 | 目的 |
---|---|
make install | 使用composer 安装依赖 |
make test | 使用phpunit 运行测试 |
make phpcbf | 使用phpcbf 整理代码 |
make phpcs | 使用phpcs 检查编码标准 |
没有 make
要在没有make
的情况下执行这些任务,您可以在容器中执行上述相同的命令。
docker run --rm -it -v .:/code -e DOCROOT=/code/vendor/mink/driver-testsuite/web-fixtures registry.gitlab.com/behat-chrome/docker-chrome-headless bash
然后在容器shell中
composer install
vendor/bin/phpunit
版本控制和发布
- 发布通过Packagist在https://packagist.org.cn/packages/dmore/chrome-mink-driver分发
- 本项目旨在遵循语义化版本控制。
- 使用Gitlab中的发布协调问题来沟通版本发布。
- 通过将git标签推送到Gitlab来创建新版本:git标签。
用法
use Behat\Mink\Mink;
use Behat\Mink\Session;
use DMore\ChromeDriver\ChromeDriver;
$mink = new Mink([
'browser' => new Session(new ChromeDriver('http://localhost:9222', null, 'http://www.google.com'))
]);
配置
选项 | 值 | 描述 |
---|---|---|
socketTimeout | int, 默认: 10 | 连接超时(秒) |
domWaitTimeout | int, 默认: 3000 | DOM就绪等待超时(毫秒) |
downloadBehavior | allow, 默认, deny | Chrome开关,允许下载。(v62+) |
downloadPath | 例如: /tmp/(默认值) | 如果允许,文件将下载到此处。 |
将配置值作为new ChromeDriver()
的第三个参数传递。
渲染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'))
));
$mink->setDefaultSessionName('browser');
$mink->getSession()->visit('https://gitlab.com/behat-chrome/chrome-mink-driver/blob/master/README.md');
$driver = $mink->getSession()->getDriver();
$driver->printToPdf('/tmp/readme.pdf');
可用选项在此处文档化:https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-printToPDF
使用Mink驱动器接口方法getScreenshot()
支持截图。
相关项目
Behat扩展
要使用此驱动器与Behat,请尝试dmore/behat-chrome-extension
Behat扩展。
Docker镜像
使用Docker镜像来执行针对目标浏览器(s)的测试,并包括最新的Chrome Stable、Chrome Beta和Chromium。