Laravel Dusk中是否有与Selenium类似的方式,通过 innerHTML属性获取元素的源代码'?
Ex:<div>Hello <p>World!</p></div>
的innerHTML将是:
Hello <p>World!</p>
。
答案 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>');
});
}