javaScript来实现拖拽页面滚动条

  在Selenium中通过元素定位会自动帮你拖拽到对应位置,所以是没有自带的scoll方法。但是这个是有限制,例如当前页面高度太长,默认是页上半部分,你定位的元素在页尾,这个时候可能就会报元素不可见的异常。我们就需要利用javaScript来实现拖拽页面滚动条。

我们一般可以两个方法去拖拽,一个是根据拖拽的坐标(像素单位),另外一个是根据拖拽到一个参考元素。

 根据拖拽的坐标(scrollBy() )

scrollBy() 方法可把内容滚动指定的像素数。

注意: 要使此方法工作 window 滚动条的可见属性必须设置为true!

参数 描述
xnum 必需。把文档向右滚动的像素数。
ynum 必需。把文档向下滚动的像素数。
package query;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class ElementOpration {
public static void main(String[] args) throws Exception {  
        
        System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");  
           
        WebDriver driver = new ChromeDriver();  
     
        driver.manage().window().maximize();  
       
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
          
        driver.get("https://blog.csdn.net/weixin_39218743");  
       
        Thread.sleep(1000);
        
        JavascriptExecutor jse= (JavascriptExecutor)driver;
        jse.executeScript("window.scrollBy(0,3301)", "");
       
     
        
    }  

}

根据另一个参考元素

package query;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class ElementOpration {
public static void main(String[] args) throws Exception {  
        
        System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");  
           
        WebDriver driver = new ChromeDriver();  
     
        driver.manage().window().maximize();  
       
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
          
        driver.get("https://blog.csdn.net/weixin_39218743");  
       
        Thread.sleep(1000);
        
        // 定义互联网举报中心这个元素
        WebElement element = driver.findElement(By.xpath("//*[@id=\"asideFooter\"]/div[2]/div/div/div[4]/p[3]/a/span"));
        //创建一个javascript 执行实例
      	JavascriptExecutor je = (JavascriptExecutor) driver;
      		
      	//执行js语句,拖拽浏览器滚动条,直到该元素到底部,马上就不可以见
      	je.executeScript("arguments[0].scrollIntoView(true);",element);
        
     
        
    }  

}

关于scrollIntoView(true),应该这么理解,拖动到可以看到这个元素为止,如果这个地方ture改成false,也是可以,拖动效果就有些随意了。

猜你喜欢

转载自blog.csdn.net/weixin_39218743/article/details/88130352
今日推荐