[ブラウザテスト(Laravel Dusk)] [1]を使用してテストを準備しています
[1]: https://laravel.com/docs/5.4/dusk ブラウザページを下にスクロールする前に、表示されていない要素を強制的にクリックする必要があります。夕暮れテストで、非表示要素をクリックするか、ブラウザページをスクロールするように定義するにはどうすればよいですか?
class SliderTest extends DuskTestCase
{
/**
* A Dusk test example.
*
* @return void
*/
public function testExample()
{
$this->browse(function ($browser) {
$browser
->visit('http://localhost:8000/admin/login')
->click('label[for=test_1]')
->pause(500)
;
});
}
}
@jamesからの回答に基づく
スクリプトを実行することはできますが、これらを連鎖させることはできません。したがって、クリックが発生する前にスクロールを実行できます。
public function testExample()
{
$this->browse(function ($browser) {
$browser
->visit('http://localhost:8000/admin/login')
->driver->executeScript('window.scrollTo(0, 500);');
// can't chain methods after this
$browser
->click('label[for=test_1]')
->pause(500) //you can keep chaining here;
});
}
これで、script
メソッドを使用できます。
$browser->script('window.scrollTo(0, 500);');
スクロールする必要がある距離がわかっている場合は、次のことを試すことができます。
$browser->driver->executeScript('window.scrollTo(0, 500);');
ブラウザクラスを拡張し、次のメソッドを追加します。
public function scrollTo($elementSelector)
{
return $this->driver->executeScript("document.querySelector('$elementSelector').scrollIntoView()");
}
次に、セレクターまでスクロールできます。
$browser->scrollTo("#elementId");