【问题标题】:i and not able to scroll side bar in selenium java我无法在 selenium java 中滚动侧边栏
【发布时间】:2022-02-18 16:57:43
【问题描述】:

我试图使用 eventfiringwebdriver 但无法使用它显示不需要的错误

      EventFiringWebDriver EventFiringWebDriver = new EventFiringWebDriver(driver);
      
      EventFiringWebDriver.executeScript

("document.querySelector('/​​html/body/begin:/div[1]/div[2]/div[2]/div)') ;

second method i was trying  by javascript and actions
    JavascriptExecutor jre = (JavascriptExecutor)driver;
    jre.executeScript("window.scrollBy(0,1000)");
    
    
    WebElement extension =  
    driver.findElement(By.xpath("/html/body/begin:/div[1]/div[2]/div[2]/div"));
    Thread.sleep(2000);
    jre.executeScript("argument[2000].scrollIntoView();", extension);
    

【问题讨论】:

    标签: java selenium scroll


    【解决方案1】:

    要将 WebElement 作为 js 脚本评估的参数,应使用下一个语法:

    WebElement extension =  
    driver.findElement(By.xpath("/html/body/begin:/div[1]/div[2]/div[2]/div"));
    Thread.sleep(2000);
    jre.executeScript("arguments[0].scrollIntoView();", extension);
    

    argument[2000] 更改为arguments[0]

    所以,这个命令不应该再抛出错误了。


    参数传递给 JavascriptExecutor.executeScript

    这说明了如何传递多个参数进行评估,以及为什么在我们传递单个参数的情况下应该使用arguments[0]

    int result = jre.executeScript("return (arguments[0] + arguments[1] + arguments[2])", 2, 5, 10);
    System.out.println("Result: " + result);
    

    将打印:

    Result: 17
    

    【讨论】:

      【解决方案2】:

      您可以使用JS滚动到页面上的特定位置(顶部/底部),也可以滚动到元素。

      public void scrollToTop() {
           jsExecutor.executeScript("window.scrollTo(0,0)");
      }
      
      public void scrollToBottom() {
           jsExecutor.executeScript("window.scrollTo(0,document.body.scrollHeight)");
      }
      
      public void scrollToOffset(int x, int y) {
           jsExecutor.executeScript("window.scrollTo(" + x + "," + (y - 100) + ")");
      }
      public void scrollToElement(WebElement webElement) {
           scrollToOffset(webElement.getLocation().x, webElement.getLocation().y);
      }
      
      public void scrollToElement(By locator) {
           scrollToTop();
           scrollToElement(findElement(locator));
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-26
        • 2015-09-23
        • 1970-01-01
        • 1970-01-01
        • 2019-01-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多