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

如何使Selenium WebDriver滚动到特定元素以使其显示在屏幕上。我尝试了很多不同的选择,但是没有运气。这在c#绑定中不起作用吗?

我可以使它跳到特定的位置,((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#绑定中执行By.Id是否存在问题?

回答:

它的问题不大,但我相信有比上面建议的更好的解决方案。

您应该使用Actions类来执行到元素的滚动。

var element = driver.FindElement(By.id("element-id"));

Actions actions = new Actions(driver);

actions.MoveToElement(element);

actions.Perform();

以上是 如何使用C#使用Selenium WebDriver滚动到元素 的全部内容, 来源链接: utcz.com/qa/429649.html

回到顶部