Laravel сумеречная прокрутка и ожидание динамического элемента - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть списки, которые динамически отображаются при прокрутке страницы, например, когда я открываю страницу, есть только <div id="list-0" date="2018-01-01"></div>, а после прокрутки вниз, <div id="list-1" date="2018-01-02"></div> будет динамически отображаться, как и <div id="list-2" date="2018-01-03"></div>и <div id="list-3" date="2018-01-04"></div> и т. д.

Эти списки не отображаются в Chrome View-Source (Ctrl + U)

Я хочу использовать Laravel Dusk для прокрутки страницы вниз, если естьнет list-n и получить атрибут даты.

Вот мой код

/** @test */
public function scroll_down_each_list_and_match_the_date()
{
    $this->browse(function (Browser $browser) {

        $browser->visit('/lists');

        $listsLength = $this->listsLength();

        for($i = 0; $i <= $listsLength; $i++){

            $selector = "div[id=\"list-$i\"]";

            while(!$browser->waitFor($selector)){

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

        $date = $browser->attribute($selector, 'date');

        $browser->assertEquals($date, $this->date($i));

        }
    });
}

Ошибка подтверждения: Facebook \ WebDriver \ Exception \ TimeOutException: 5 секунд ожидания селектора [div [id = "list-1"]].

, если я заменим while(!$browser->waitFor($selector)) на while(!$browser->element($selector)), похоже, что сумрак Ларавела будет выполняться вечно и не остановится.

1 Ответ

0 голосов
/ 08 декабря 2018

Вместо: $ selector = "div [id = \" list- $ i \ "]";

Возможно, попробуйте: $ selector = $ browser-> attribute ('list- $ i','идентификатор');

...