Laravel сумеречная прокрутка и ожидание динамического элемента
У меня есть списки, которые динамически отображаются при прокрутке страницы, например, когда я открываю страницу, есть только <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, чтобы прокрутить страницу вниз, если нет списка 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 ответ
Вместо: $selector = "div[id=\"list-$i\"]";
Может попробовать: $selector = $browser->attribute('list-$i', 'id');