puth/laravel

Puth Laravel 客户端

v1.0.0-alpha.1 2023-10-01 15:01 UTC

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,因为不需要它