2017-02-14 44 views
2

我正在使用Laravel Dusk编写测试,以确保在索引页上有10篇文章。声明页面上有一定数量的元素

下面是一些HTML代码:

<h1>A list of articles</h1> 
<ul> 
    @foreach($articles as $article) 
     <li class="article-item"> {{ $article->title }}</li> 
    @endforeach 
</ul> 

我在想,在我的测试文件,我可以先选择所有li.article-item则断言,有10个这样的元素。

的代码可能是:

$this->browse(function ($browser) { 
    $browser->visit('/articles') 
     ->assertSee('A list of articles'); 
    // no such method 
    $elements = $browser->findElements('.article-item'); 

    $this->assertCount(10, $elements); 

}); 

但事实上,它看起来像Laravel黄昏不支持同时选择多个元素。那么在这种情况下,我可以如何构建我的测试?在黄昏使用WebDriver API选择这些元素的任何机会?

谢谢!

回答

0

事实证明,一个$浏览器实例存储它正在使用的驱动程序,这意味着在测试方法中,我实际上可以通过WebDriver API选择HTML元素。

因此,一个可能的解决方案可能是

/** @test */ 
public function it_displays_a_list_of_articles() 
{ 
    $this->browse(function ($browser) { 
     $browser->visit('/articles'); 
     $elements = $browser->driver->findElements(WebDriverBy::className('article-item')); 
     $this->assertCount(10, $elements); 
    }); 
}