Laravel Dusk:如何从元素获取 HTML

作者:编程家 分类: laravel 时间:2025-10-15

使用 Laravel Dusk 可以方便地进行 Web 应用的端到端测试。在测试过程中,有时需要从特定的元素中获取 HTML 内容,以便进行进一步的断言或操作。本文将介绍如何使用 Laravel Dusk 获取元素的 HTML,并提供相关的案例代码。

获取元素的 HTML

要获取元素的 HTML 内容,可以使用 Laravel Dusk 提供的 `attribute` 方法。该方法可以获取元素的指定属性值,包括 `innerHTML` 属性。通过将 `attribute` 方法与 `innerHTML` 属性结合使用,可以获取元素的 HTML 内容。

下面是一个示例代码,演示了如何使用 Laravel Dusk 获取元素的 HTML:

php

$browser->visit('/')

->assertSee('Welcome')

->attribute('.my-element', 'innerHTML');

在上述代码中,我们首先访问了应用的首页,然后使用 `assertSee` 方法来断言页面是否包含特定的文本内容。接下来,我们使用 `attribute` 方法获取了类名为 `.my-element` 的元素的 HTML 内容。

案例代码

假设我们正在测试一个博客应用,我们想要验证文章详情页面是否正确显示了文章的内容。我们可以使用 Laravel Dusk 获取文章内容元素的 HTML,然后进行断言。

下面是一个示例代码,演示了如何使用 Laravel Dusk 获取文章内容元素的 HTML:

php

$browser->visit('/posts/1')

->assertSee('Article Title')

->assertSeeIn('.article-content', function ($element) {

$html = $element->attribute('innerHTML');

return strpos($html, 'Lorem ipsum dolor sit amet') !== false;

});

在上述代码中,我们首先访问了博客应用中的文章详情页面,然后使用 `assertSee` 方法断言页面是否包含文章的标题。接下来,我们使用 `assertSeeIn` 方法并传入一个回调函数。在回调函数中,我们使用 `attribute` 方法获取了类名为 `.article-content` 的元素的 HTML 内容,并使用 `strpos` 函数判断内容中是否包含了指定的文章内容。

本文介绍了如何使用 Laravel Dusk 获取元素的 HTML 内容。通过结合 `attribute` 方法和 `innerHTML` 属性,我们可以轻松地从元素中提取 HTML,并进行进一步的断言或操作。在测试过程中,这种功能非常有用,可以帮助我们验证页面的正确性和一致性。