本篇介绍如何使用javascript脚本去处理竖向滚动条,例如有这样一个场景,你访问我的csdn主页,想下拉到当前页的地步,这个下拉,你会拖拽竖向滚动条到底部就实现了。这个过程,如果在webdriver的自动化测试,如何做呢。在webdriver中是没有拖动滚动条的方法的,需要借助javascript来根据一个页面元素去实现拖动滚动条的过程。本篇要学习两个知识点,一个是webdriver中如何执行Js脚本,第二个是如何写js滚动到某一个元素附近。
下面用,打开我的csdn主页举例,拖动到底部,参考物是底部的公司介绍这个元素。
package lessons;
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("http://blog.csdn.net/u011541946");
Thread.sleep(1000);
// 定义csdn底部 公司简介 这个元素
WebElement element = driver.findElement(By.xpath("//*/dd[@class='foot_sub_menu']/a[1]"));
//创建一个javascript 执行实例
JavascriptExecutor je = (JavascriptExecutor) driver;
//执行js语句,拖拽浏览器滚动条,直到该元素到底部,马上就不可以见
je.executeScript("arguments[0].scrollIntoView(true);",element);
}
}
关于scrollIntoView(true),应该这么理解,拖动到可以看到这个元素为止,如果这个地方ture改成false,也是可以,拖动效果有一点差别,你可以观察下。一般情况,ture或者false都可以。