Javascript 如何滚动到含硒元素的内部底部?

Javascript 如何滚动到含硒元素的内部底部?,javascript,c#,selenium,Javascript,C#,Selenium,我正在用C语言编写selenium。但是,我发现滚动页面的最佳方式是使用: IJavaScriptExecutor js = driver as IJavaScriptExecutor; js.ExecuteScript("window.scrollBy(0,900);"); 然而,在我目前的情况下,我需要滚动的窗口不是整个页面,而是其中的一部分。这个命令没有任何作用。我想我需要先选择元素,所以我尝试了以下方法: js.ExecuteScript("document.getElementsBy

我正在用C语言编写selenium。但是,我发现滚动页面的最佳方式是使用:

IJavaScriptExecutor js = driver as IJavaScriptExecutor;
js.ExecuteScript("window.scrollBy(0,900);");
然而,在我目前的情况下,我需要滚动的窗口不是整个页面,而是其中的一部分。这个命令没有任何作用。我想我需要先选择元素,所以我尝试了以下方法:

js.ExecuteScript("document.getElementsByClassName('scroller')[0].scrollBy(0,500)")
这也不起作用,我不确定这是否是因为它错了,因为我对JS不是特别熟悉,或者我是否做了其他错误的事情,比如选择了错误的元素来尝试滚动

总而言之,我的问题是,有没有更好的方法在c语言中滚动窗口?我尝试滚动元素的js代码是否错误?有没有办法找出我应该尝试滚动的正确元素?

您可以使用scrollIntoViewtrue;为此,它将调出传递的元素视图

假设您希望滚动到下面的元素

WebElement element = driver.getElementByClassName('scroller');
然后你可以这样做:

js.ExecuteScript("arguments[0].scrollIntoView(true);", element);
对于多个元素,您可以通过传递匹配的索引号来尝试以下操作:

js.ExecuteScript("arguments[0].scrollIntoView(true);", driver.getElementsByClassName('scroller')[pass the index number here]);

不要查找scroller,而是查找具有scrollbar的元素,就像在本页上一样,如果您通过在Answer textarea中添加新行来生成scrollbar,则可以使用document.getElementsByTagName'textarea'[0].scrollTo0,20来滚动它。据我所知,具有scroll类的元素就是具有scroll的元素。但是我不能肯定,因为里面有一堆嵌套的div。这似乎是该页面块的顶部元素。正如我在上面的帖子中提到的,我不太确定如何确定哪个元素是可以滚动的。嗨@cybera,检查我的答案,让我知道它是否对你有效?谢谢你…@Ali SCE我现在正在测试它。@cybera,那么我建议你可以选择一些你认为可以使用Chrome开发工具滚动的元素,然后在控制台上分别尝试$0.scrollTo0,20。一旦找到正确的元素,就可以使用document.getElements.中的一个轻松地找到该元素。。方法如果没有实际的url,我想你很难给出准确的解决方案。这是行不通的。scroller不是我试图滚动到视图中的元素,而是可以滚动的块的类。我正在尝试滚动到那个框的底部。从框的底部取一些元素并尝试通过,它将滚动到那里。。。滚动本身不工作或您想要的东西不工作?好的。我设法让它滚动,但我认为该网站是垃圾。当我像这样滚动元素时,它在滚动条不移动的情况下滚动,当我到达预装元素的底部时,它停止,因为滚动条图标没有移动,它要求它位于底部。所以我想我必须从滚动切换到弄清楚如何移动滚动图标。谢谢你的帮助。