环境搭建
selenium-server-standalone.jar的下载地址
http://selenium-release.storage.googleapis.com/index.html
使用chrome浏览器需要下载对应版本的chromedriver驱动文件,firefox的不用下驱动但是selenium版本跟浏览器有对应要求
http://chromedriver.storage.googleapis.com/index.html
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.get("https://blog.csdn.net");
}
控制浏览器
//最大化
driver.manage().window().maximize();
//指定大小
driver.manage().window().setSize(new Dimension(400, 500));
//刷新
driver.navigate().refresh();
//后退
driver.navigate().back();
//前进
driver.navigate().forward();
//关闭
driver.quit();
定位、操作元素
driver.findElement(By.id("id的值"));
driver.findElement(By.name("name的值"));
driver.findElement(By.linkText("链接的全部文字"));
driver.findElement(By.partialLinkText("链接的部分文字"));
driver.findElement(By.xpath("xpath表达式"));
driver.findElement(By.cssSelector("css表达式"));
driver.findElement(By.className("class属性"));
driver.findElement(By.tagName("标签名称"));
/**
操作元素的方法:
* sendKeys("要输入的文字")
* click()
* submit()
* clear()
*/
通过css表达式:
//通过class属性定位
findElement(By.cssSelector(".s_ipt"));
//通过id属性定位
findElement(By.cssSelector("#kw"));
//通过标签名定位
findElement(By.cssSelector("input"));
//通过父子关系定位
findElement(By.cssSelector("span>input"));
//通过属性定位
findElement(By.cssSelector("input[maxlength='100']"));
https://www.cnblogs.com/sylvia-liu/p/4469597.html
下拉框识别和操作
public void selectDemo() {
Select s=new Select(driver.findElement(By.id("id")));
s.selectByIndex(1);
s.selectByValue("12");
s.selectByVisibleText("yy");
}
alert弹框
public void alertDemo() {
driver.findElement(By.id("confirm")).click();
driver.switchTo().alert().accept(); //dismiss
}
多窗口切换
public void windowsDemo() throws InterruptedException {
WebDriver driver=new ChromeDriver();
driver.get("https://blog.csdn.net");
//获取当前窗口的句柄
String curr_handle=driver.getWindowHandle();
System.out.println("当前窗口title:"+driver.getTitle());
//跳到一个新窗口
driver.findElement(By.linkText("iOS使用动画连贯过渡界面转换")).click();
//获取所有页面的句柄,并循环判断不是当前的句柄
for(String h:driver.getWindowHandles()) {
if(!h.equals(curr_handle))
driver.switchTo().window(h);
}
System.out.println("当前窗口title:"+driver.getTitle());
//再次切换回原来的父窗口
driver.switchTo().window(curr_handle);
System.out.println("当前窗口title:"+driver.getTitle());
Thread.sleep(5000);
}