等待element.scrollIntoView()进行滚动

时间:2018-03-22 08:26:48

标签: javascript selenium

在我的seleniumtests中,我在使用IJavaScriptExecutor.ExecuteScript点击它们之前将元素滚动到视图中

var js = (IJavaScriptExecutor) browser;

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

js.ExecuteScript(script);

然后我点击一个带有

的按钮
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();

但是,滚动到视图和点击之间似乎有一个时间窗口。通常,人们通过使用类似Thread.Sleep(500)的内容来解决这个问题。

我想远离随意睡觉,所以我想找到一种方法来保证滚动已经发生。

如何?

0 个答案:

没有答案