【问题标题】:Scroll element to the middle of the screen with selenium使用 selenium 将元素滚动到屏幕中间
【发布时间】:2020-11-23 05:07:58
【问题描述】:

有没有办法让一个元素滚动到屏幕中间? 我试过了:

((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", element);

但它总是在顶部滚动。

【问题讨论】:

标签: java selenium


【解决方案1】:

scrollIntoView()

scrollIntoView() 方法将指定元素滚动到浏览器窗口的可见区域。

语法:

element.scrollIntoView(alignTo)

参数:

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

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

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

    • skipped :它将滚动到元素的顶部。

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


根据您的用例,您可以将元素滚动到屏幕中间而不是使用 scrollIntoView() 作为替代方法,您可以滚动窗口 使用以下任一选项:

  • 向下滚动
    • scroll()

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

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

【讨论】:

【解决方案2】:

试试这个:

driver.findElementByAndroidUIAutomator("new UiScrollable(new UiSelector()).scrollIntoView(new UiSelector().text(\"Text of element upto which you want to scroll down\"));");

【讨论】:

    【解决方案3】:

    您可以根据网页部分滚动,

    如果你想滚动网页,按中间。这意味着去到所需的底部位置:

    语法:

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

    它将垂直向下滚动。

    【讨论】:

      【解决方案4】:

      我可以看到这个问题已经有了一些很好的答案,但是您可以通过多种方式在 selenium 中进行向下滚动/向上滚动。在所有这些方式中,我想在这个问题上再添加一个。

      您可以为此目的使用 Action 类:

      代码

      Actions action = new Actions(driver);
      action.sendKeys(Keys.PAGE_DOWN).build().perform();
      

      您可以根据您的要求多次致电sendKeys(Keys.PAGE_DOWN)。像这样:

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

      等等!

      另一种方法是使用 JavaScript。 @Ishita Shah 已经提供了该解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-11
        • 1970-01-01
        • 2016-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多