在我的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)
的内容来解决这个问题。
我想远离随意睡觉,所以我想找到一种方法来保证滚动已经发生。
如何?