如何在 C# 中使用 Selenium 驱动程序向上/向下滚动页面?
Posted
技术标签:
【中文标题】如何在 C# 中使用 Selenium 驱动程序向上/向下滚动页面?【英文标题】:How to scroll page up/down using Selenium Driver in C#? 【发布时间】:2021-12-01 02:00:03 【问题描述】:我正在尝试在自动化测试环境中向上滚动窗口,但这不起作用(控制台中也没有错误):
public void ScrollToTheTop()
if (this.driver is RemoteWebDriver remoteDriver)
IjavascriptExecutor jex = remoteDriver;
jex.ExecuteScript("window.scrollTo(0,0)");
现在,如果我尝试执行 jex.ExecuteScript("alert('Something')")
它可以正常工作,这意味着 js 可以正确执行。但由于某种原因,滚动操作不起作用(也尝试过scrollBy()
)。
有人知道如何执行滚动脚本吗?谢谢。
【问题讨论】:
不回答我的问题,但这是我发现单击不可见元素的一种解决方法:((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click();", element);
元素的类型为IWebElement
【参考方案1】:
如果你想在 C# 中滚动,使用 ExecuteScript 请使用下面的代码:
((IJavaScriptExecutor)Driver).ExecuteScript("window.scrollTo(0, Y)");
Y
应该是垂直轴。
向下滚动:
((IJavaScriptExecutor)Driver).ExecuteScript("window.scrollTo(0, 200)");
或向上滚动:
((IJavaScriptExecutor)Driver).ExecuteScript("window.scrollTo(0, -200)");
在 C#-Selenium 绑定中移动到特定的 Web 元素:
IWebElement e = Driver.FindElement(By.XPath(xpath of the web element));
((IJavaScriptExecutor)Driver).ExecuteScript("arguments[0].scrollIntoView(true);", e);
移动到页面末尾:
((IJavaScriptExecutor)Driver).ExecuteScript("var scrollingElement = (document.scrollingElement || document.body);scrollingElement.scrollTop = scrollingElement.scrollHeight;");
【讨论】:
感谢代码示例,但如果您仔细观察,您会发现我的代码几乎相同,但它不起作用。问题是窗口滚动脚本对页面没有任何影响。 你有一个叫做RemoteWebDriver
的东西我相信它是webdriver的父类。您是否尝试了所有这些但没有任何效果?
它是所有不同驱动程序(Chrome、Firefox 等)的父类。正如我所说,它完成了这项工作,我已经使用alert( )
脚本对其进行了测试,并且它执行正确。出于某种原因,滚动脚本没有任何效果。以上是关于如何在 C# 中使用 Selenium 驱动程序向上/向下滚动页面?的主要内容,如果未能解决你的问题,请参考以下文章
通过 Selenium WebDriver C# 获取 HTTP 状态码
Selenium WebDriver - 如何使用 C# 设置页面加载超时