2

Ich habe einen Test mit Laravel Dusk geschrieben, um sicherzustellen, dass es 10 Artikel auf der Indexseite gibt. HierVergewissern Sie sich, dass auf der Seite eine bestimmte Anzahl von Elementen vorhanden ist.

ist einig HTML-Code:

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

ich, dass in meiner Testdatei denken kann ich zunächst alle li.article-item wähle dann behaupten, dass es 10 solche Elemente.

könnte der Code sein:

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

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

}); 

Aber in der Tat, es sieht aus wie Laravel Dusk nicht unterstützt mehrere Elemente auf einmal auswählen. Wie kann ich in diesem Fall meinen Test strukturieren? Gibt es irgendeine Chance, dass ich innerhalb von Dusk WebDriver API verwende, um diese Elemente auszuwählen?

Vielen Dank!

Antwort

0

Es stellt sich heraus, dass eine $ browser-Instanz den verwendeten Treiber speichert, was bedeutet, dass ich bei einer Testmethode tatsächlich das HTML-Element über die WebDriver-API auswählen kann.

So eine mögliche Lösung könnte sein,

/** @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); 
    }); 
} 
Verwandte Themen