puth / laravel
Puth Laravel 客户端
v1.0.0-alpha.1
2023-10-01 15:01 UTC
Requires
- php: ^8.0.2
- ext-json: *
- illuminate/console: ^9.0|^10.0
- illuminate/log: ^9.0|^10.0
- illuminate/support: ^9.0|^10.0
- phpunit/phpunit: ^9.0|^10.0
- puth/php: 1.0.0-alpha.1
Requires (Dev)
- mockery/mockery: ^1.0
- orchestra/testbench: ^7.0|^8.0
This package is auto-updated.
Last update: 2024-09-19 06:34:01 UTC
README
安装
composer require --dev puth/laravel:1.0.0-alpha.0
安装 Puth 包后,运行 puth:install
Artisan 命令。
php artisan puth:install
配置
您可以在 config/puth.php
中找到此包的配置文件。
示例浏览器测试
use Tests\PuthTestCase; use Puth\Laravel\Browser\Browser; class ExampleBrowserTest extends PuthTestCase { function test_visit_website() { $this->browse(function (Browser $browser) { $browser->visit('https://playground.puth.dev') ->assertSee('Puth'); }); } }
从 Dusk 的过渡
puth/laravel
包提供对 Dusk 的完整*替代。
- 由于底层库
puppeteer
的限制,以下四种方法不受支持且永远不会支持:
另一个区别是 puth/laravel
不会启动浏览器进程。为此,您需要运行 puth
(例如,在 Docker 中)并将客户端指向 puth
实例。puth/laravel
曾经包含启动 puth
进程的代码,但我觉得很少有人会使用这个功能,所以我移除了它。
目前,iframe(在 withinFrame()
方法中)仅部分支持。
控制台日志与 dusk 控制台日志不同。它们包含更多信息,但底层的 json 结构已更改。
更改的方法
$browser->keys()
:此方法不再使用 php-webdriver keymap。而是使用 puppeteer keymap,并且它是 区分大小写的!$browser->typeInDialog(selector, value)
:请使用 accept 方法,现在它接受一个值$browser->acceptDialog(value)
不受支持的方法
$browser->maximize()
:Puppeteer 无法控制实际的浏览器窗口$browser->move($x = 100, $y = 100)
:Puppeteer 无法控制实际的浏览器窗口$browser->moveMouse($xOffset, $yOffset)
:Puppeteer 没有实际的鼠标,因此不能通过偏移量移动它。我们可以跟踪鼠标的 x 和 y 位置,但那时我们需要在 $page->click、$element->click 等地方更新它$browser->ensurejQueryIsAvailable()
:Puppeteer 不附带 jQuery,因为不需要它