5

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

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

4

2 回答 2

9

要获取元素的源代码,您应该使用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
});
于 2017-10-05T18:30:42.500 回答
2

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

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

public function testSourceCode()
    {
        $this->browse(function (Browser $browser) {
            $browser->visit('/')
                    ->assertSourceHas('Hello <p>World!</p>');
        });
    }
于 2017-10-03T14:43:59.953 回答