Car*_*ter 6 php selenium-webdriver laravel-5 laravel-5.4 laravel-dusk
我正在使用 Laravel Dusk 编写一个测试,以确保索引页上有 10 篇文章。
下面是一些 HTML 代码:
<h1>A list of articles</h1>
<ul>
@foreach($articles as $article)
<li class="article-item"> {{ $article->title }}</li>
@endforeach
</ul>
Run Code Online (Sandbox Code Playgroud)
我想在我的测试文件中我可以首先选择所有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);
});
Run Code Online (Sandbox Code Playgroud)
但实际上,Laravel Dusk 似乎不支持一次选择多个元素。那么在这种情况下我该如何构建我的测试呢?在 Dusk 中我有可能使用 WebDriver API 来选择这些元素吗?
谢谢你!
事实证明, $browser 实例存储了它正在使用的驱动程序,这意味着在测试方法中我实际上可以通过 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);
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3070 次 |
| 最近记录: |