Laravel黄昏滚动和waitFor动态元素

时间:2018-12-07 13:03:37

标签: laravel testing laravel-5.7 laravel-dusk

我有一些列表,这些列表可以在向下滚动页面时动态显示,例如,当我打开页面时,只有<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)上看不到

如果没有list-n,我想使用laravel黄昏来向下滚动页面,并检索date属性。

这是我的代码

/** @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)),似乎laravel黄昏将永远执行并且不会停止。

1 个答案:

答案 0 :(得分:0)

代替:     $ selector =“ div [id = \” list- $ i \“]”;

也许尝试:     $ selector = $ browser-> attribute('list- $ i','id');