如何在Selenium (c#)中向下滚动子部分

本文关键字:滚动 Selenium | 更新日期: 2023-09-27 18:08:53

我在c#中使用Selenium Webdriver对一个带有网格的网页进行ui测试。

网格有自己的滚动条,我想向下滚动到网格的底部,以检查当我通过模态形式添加它时出现的某个结果(UI测试目前失败,因为它无法看到结果,直到我向下滚动)。

我如何定位网格上的滚动条,而不是主页上的普通滚动条?这是我的网格滚动条的HTML:

<div class="ScrollbarLayout_face ScrollbarLayout_faceVertical public_Scrollbar_face" style="height: 367.38px; transform: translate3d(0px, 148.535px, 0px); backface-visibility: hidden;"></div>

我正在考虑使用下面的代码,但我想不出如何在网格底部定位一个元素滚动到?

WebElement element = driver.findElement(By.id("my-id"));
Actions actions = new Actions(driver);
actions.moveToElement(element);
actions.perform();

如何在Selenium (c#)中向下滚动子部分

首先使用任意事件将焦点设置为网格中的任意对象

driver.FindElement(By.XPath("/html/body/div[2]//table/tbody/tr[1]/td[1]")).Click();

然后在下面加两行:

Actions actions = new Actions(driver);
actions.SendKeys(OpenQA.Selenium.Keys.End).Build().Perform();

尝试在该元素上执行操作而不向下滚动到那里。也就是说,通过findElement()获取元素,并在不滚动页面的情况下对其执行操作。

在用户nikhilp的帮助下,我成功解决了这个问题:

a)定位滚动条的XPath

Driver.FindElement(By.XPath("//*[@id='"myGrid'"]/div/div/div[2]/div"))

b)点击一次滚动条激活它

.Click()   

c)发送Page Down命令

Actions actions = new Actions(Driver);
actions.SendKeys(Keys.PageDown).Build().Perform();