获取元素的源代码

时间:2017-10-03 12:00:47

标签: laravel selenium-webdriver laravel-5 webdriver laravel-dusk

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

Ex:<div>Hello <p>World!</p></div>的innerHTML将是: Hello <p>World!</p>

2 个答案:

答案 0 :(得分:7)

要获取元素的源代码,您应该使用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
});

答案 1 :(得分:2)

我不熟悉Selenium innerHTML,但是通过Dusk,您可以通过$browser->assertSourceHas($code)直接对源代码断言。

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

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