web-dev-qa-db-ja.com

ブラウザページを下にスクロールする方法-Laravel Dusk(Browser Tests)

[ブラウザテスト(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)
                ;
        });
    }
}
13
Tomasz

@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;
    });
}
11
Christophvh

これで、scriptメソッドを使用できます。

$browser->script('window.scrollTo(0, 500);');

6
BrianEDT

スクロールする必要がある距離がわかっている場合は、次のことを試すことができます。

$browser->driver->executeScript('window.scrollTo(0, 500);');
3
James I

ブラウザクラスを拡張し、次のメソッドを追加します。

public function scrollTo($elementSelector)
{
   return $this->driver->executeScript("document.querySelector('$elementSelector').scrollIntoView()");
}

次に、セレクターまでスクロールできます。

$browser->scrollTo("#elementId");
0
Joel Harkes