Java 使用selenium将元素滚动到屏幕中间

Java 使用selenium将元素滚动到屏幕中间,java,selenium,Java,Selenium,有没有办法将元素滚动到屏幕中间? 我试过: ((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", element); 但它总是在顶部滚动。试试这个: driver.findElementByAndroidUIAutomator("new UiScrollable(new UiSelector()).scrollIntoView(new UiSelector().text(\"Text of el

有没有办法将元素滚动到屏幕中间? 我试过:

((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", element);
但它总是在顶部滚动。

试试这个:

driver.findElementByAndroidUIAutomator("new UiScrollable(new UiSelector()).scrollIntoView(new UiSelector().text(\"Text of element upto which you want to scroll down\"));");
ScrollingToView() 该方法将指定的元素滚动到浏览器窗口的可见区域

语法:

element.scrollIntoView(alignTo)
参数:

  • alignTo(布尔):可选参数,其中:

    • true
      :元素的顶部将与可滚动祖先的可见区域的顶部对齐

    • false
      :元素的底部将与可滚动祖先的可见区域的底部对齐

    • 跳过
      :它将滚动到元素的顶部

注意:根据其他元素的布局,某些元素可能无法完全滚动到顶部或底部


根据您的用例,如果您希望将元素滚动到屏幕中间,而不是使用
滚动视图()
,您可以使用以下任一选项滚动窗口:

  • 向下滚动:
    • 滚动()

      ((JavascriptExecutor)driver).executeScript("scroll(0, 250);");       
      
      ((JavascriptExecutor)driver).executeScript("window.scrollBy(0,250)", "");
      
    • window.scrollBy()

      ((JavascriptExecutor)driver).executeScript("scroll(0, 250);");       
      
      ((JavascriptExecutor)driver).executeScript("window.scrollBy(0,250)", "");
      

您可以根据网页部分进行滚动

若你们想滚动网页,按中间键。这意味着要达到所需的底部位置:

语法:

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.scrollBy(0,200)");

它将垂直向下滚动。

正如我所看到的,这个问题已经有了一些很好的答案,但是在selenium中有很多方法可以做向下滚动/向上滚动。在所有这些方面中,我想对这个问题再补充一点

为此,可以使用Action类:

代码

Actions action = new Actions(driver);
action.sendKeys(Keys.PAGE_DOWN).build().perform();
您可以根据需要多次调用
sendKeys(key.PAGE\u DOWN)
。像这样:

action.sendKeys(Keys.PAGE_DOWN).sendKeys(Keys.PAGE_DOWN).build().perform();  
等等


另一种方法是使用JavaScript@石田沙阿已经提供了解决方案。

我尝试了所有方法……当我滚动元素时,我的元素位于顶部,并由头带覆盖。头带始终覆盖第一个元素。找到的解决方案:解决方案:js.executeScript(“window.scrollBy(0,新矩形(Toolkit.getDefaultToolkit().getScreenSize().getScreenSize()/2)”;