获取元素的源代码

Get the source code of an element

在Laravel Dusk 中是否有与我们在Selenium 中类似的方法,通过'innerHTML 属性'获取元素的源代码?

例如:<div>Hello <p>World!</p></div> 的 innerHTML 将是: Hello <p>World!</p>.

我不熟悉 Selenium innerHTML,但是对于 Dusk,您可以通过 $browser->assertSourceHas($code).

直接针对源代码进行断言

如果断言失败,您将看到您网站的完整源代码。

public function testSourceCode()
    {
        $this->browse(function (Browser $browser) {
            $browser->visit('/')
                    ->assertSourceHas('Hello <p>World!</p>');
        });
    }

要获取元素的源代码,您应该像这样将 element() 方法与 getAttribute 一起使用:

$this->browse(function(Browser $browser) {

    $html = $browser->visit('/')
                    ->element('div.content')
                    ->getAttribute('innerHTML');

   // now in $html you have HTML inside div.content element
});

请注意,如果给定的选择器有多个元素,您应该使用 elements() 方法并遍历找到的元素以获取它们的内容,如下所示:

$this->browse(function(Browser $browser) {
    $elements = $browser->visit('/')
                        ->elements('div.content');

    $html = [];
    foreach ($elements as $element) {
        $html[] = $element->getAttribute('innerHTML');
    }

    // now in $html you have array of HTML inside div.content elements
});