如何在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();
首先使用任意事件将焦点设置为网格中的任意对象
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();