如何让 Selenium WebDriver 滚动到特定元素以将其显示在屏幕上。我尝试了很多不同的选择,但没有运气。 这在 C# 绑定(bind)中不起作用吗?
我可以让它跳到一个特定的位置ex
((IJavaScriptExecutor)Driver).ExecuteScript("window.scrollTo(0, document.body.scrollHeight - 150)");
但我希望能够将它发送到不同的元素,而不必每次都给出确切的位置。
public IWebElement Example { get { return Driver.FindElement(By.Id("123456")); } }
例 1)
((IJavaScriptExecutor)Driver).ExecuteScript("arguments[0].scrollIntoView(true);", Example);
例 2)
((IJavaScriptExecutor)Driver).ExecuteScript("window.scrollBy(Example.Location.X", "Example.Location.Y - 100)");
我看的时候没有跳到页面下的元素,异常匹配元素不在屏幕上。
我在它后面添加了一个 bool ex = Example.Exists();
并检查了结果。
它确实存在(它是真的)。
它没有显示(因为它还没有移动到元素,所以它仍然在屏幕外)
未选中 ??????
有人看到了 By.ClassName 的成功。 有谁知道在 C# 绑定(bind)中执行此 By.Id 是否有问题?
最佳答案
这是一个比较老的问题,但我相信有比上面建议的更好的解决方案。
这是原始答案:https://stackoverflow.com/a/26461431/1221512
您应该使用 Actions 类来执行滚动到元素。
var element = driver.FindElement(By.id("element-id"));
Actions actions = new Actions(driver);
actions.MoveToElement(element);
actions.Perform();
关于c# - 如何使用 Selenium WebDriver 滚动到元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28473710/