等待element.scrollIntoView()进行滚动

And*_*dén 6 javascript selenium

在我的seleniumtest中,我将元素滚动到视图中,然后按IJavaScriptExecutor.ExecuteScript如下方式单击它们

var js = (IJavaScriptExecutor) browser;

var script = "$(\"" + selector.Replace('\"', '\'') +
  (!string.IsNullOrEmpty(text) ? ":contains('" + text + "')" : "") +
  "\").get(0).scrollIntoView(false)";

js.ExecuteScript(script);
Run Code Online (Sandbox Code Playgroud)

然后我点击一个按钮

var remoteWebDriver = (RemoteWebDriver) browser;
var elements = remoteWebDriver.FindElementsByCssSelector(selector);

/* pick the element with the correct text */    
IWebElement element = text != ""
  ? elements.Where(element => element.Text.Contains(text)).Single()
  : elements.Single();

var actions = new Actions(browser);
actions.MoveToElement(element).Perform();
actions.Click().Perform();
Run Code Online (Sandbox Code Playgroud)

但是,在滚动到视图和单击之间似乎存在一个时间窗口。通常,人们通过使用来解决此问题Thread.Sleep(500)

我想避免随机睡觉,所以我想找到一种确保滚动发生的方法。

怎么样?