behat-chrome / chrome-mink-driver
Requires
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- behat/mink: ^1.7
- textalk/websocket: ^1.2.0
Requires (Dev)
- mink/driver-testsuite: dev-master
- phpunit/phpunit: ^5.0.0
- squizlabs/php_codesniffer: ^3.5
- dev-main
- 3.0.x-dev
- 2.8.0
- dev-master / 2.0.x-dev
- dev-155-readme
- dev-155-remote-chrome
- dev-121-rename-to-behat-chrome
- dev-develop
- dev-lint-fixes
- dev-114-coding_standards_fix
- dev-86-cookie_encoding
- dev-dev-2.9.0
- dev-116-phpunit-update
- dev-108-php7.4_8.0
- dev-combined-108
- dev-normalize-composer.json
- dev-fix-chromebrowser-test-name
- dev-107-enlightn_security-checker
- dev-extend-stream-read-exception-information
- dev-94-start_before_actions
- dev-104-code_style_checks
- dev-77-chrome_hostname_devtools_access
- dev-code_style
- dev-103-start_before_setBasicAuth
- dev-ci-fixes
- dev-stream-read-exception
- dev-new_client
- dev-improved-ci
- dev-revert-ce7b501e
- dev-fix-maximize-on-headless
- dev-Issue-32
- dev-fix-click
This package is auto-updated.
Last update: 2024-09-13 20:10:02 UTC
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的选项触发。
选项 | 值 |
---|---|
downloadBehavior | allow, 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/'])),
));
除了上述下载选项外,还可以提供以下选项
选项 | 值 | 描述 |
---|---|---|
socketTimeout | int,默认:10 | 秒的连接超时 |
domWaitTimeout | int,默认:3000 | DOM准备等待超时(毫秒) |
渲染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此存储库并贡献您的改进。
有关说明,请参阅 贡献指南