c# - 如何使用 Selenium WebDriver 滚动到元素

标签 c# selenium selenium-webdriver selenium-chromedriver

如何让 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/

相关文章:

c# - 如何通过Selenium和Webdriver提高执行速度

c# - 方法名称 (int, DateTime) 没有支持的 SQL 翻译

c# - Paypal TLS1.2/Http1.1 升级 - PayPal 支付标准的 HTML 表单基础

c# - LINQ 程序集位于 Windows XP 中的什么位置?

selenium - 尝试在 Selenium 中拖动/移动元素时如何找出 x 和 y 偏移量?

java - 如何使用selenium处理 session 超时

python - 如何捕获高分辨率的网站截图?

c# - WindowsApplication C# 构造函数 : Form1 could not be found

vba - 使用 Selenium Web Driver 和 XPath 将文本存储在变量中

xpath - WebDriver通过组合的xpath查找元素