如何使用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