如何让scrollIntoView方法在Laravel dusk中工作

问题描述 投票:0回答:2

说明: scrollIntoview dusk 方法未按预期工作。

任何人都可以给我指出正确版本的 laravel/dusk、chrome 驱动程序版本,以使其再次工作。

目前我在运行脚本时使用这些版本。 Laravel 框架版本:6.2 拉拉维尔/黄昏:6.11 php:7.2 Chrome 驱动程序:88.0.4324.96.

提前谢谢您。

laravel-dusk
2个回答
3
投票

scrollIntoView()
中存在各种各样的意外行为,以及相关原因...

其中:我自己的经验是关于将 Bootstrap 导航栏放置在滚动元素上方,导致许多“其他元素将收到点击”错误。我用自己的浏览器宏修复了它,滚动页面底部(而不是顶部)的元素:

\Laravel\Dusk\Browser::macro('scrollView', function ($selector) {
  $selector = addslashes($this->resolver->format($selector));
  $this->driver->executeScript("document.querySelector(\"$selector\").scrollIntoView({block: 'end'});");
  $this->pause(500);
  return $this;
});

0
投票

终于通过在

--disable-smooth-scrolling
中添加
DuskTestCase.php
选项来永久解决这个长期存在的、烦人的问题:

$options = (new ChromeOptions)->addArguments(collect([
    "--window-size=1920,1080",
    "--ignore-certificate-errors",
    "--disable-smooth-scrolling" // add this
])->unless($this->hasHeadlessDisabled(), function ($items) {
    return $items->merge([
        "--disable-gpu",
        "--headless",
    ]);
})->all());
© www.soinside.com 2019 - 2024. All rights reserved.