关闭浏览器
我们已经知道了如何通过TestNG 来管理我们的测试用例,也知道如何去启动我们想要的浏览器,那么浏览器的平时常用的操作还有哪些呢?
关闭当前窗口(tab)
driver.close()
Demo
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;
/**
* Created by 米阳 on 18/9/2017.
*/
public class BrowserActionsDemo {
@Test
public void openAndClosedBrowser() throws InterruptedException {
// 设置chromedriver系统变量
System.setProperty("webdriver.chrome.driver", "./drivers/chromedriver.exe");
// 启动chrome浏览器
WebDriver driver = new ChromeDriver();
// 为了看效果,线程等待5S
Thread.sleep(5000);
// 关闭当前窗口
driver.close();
}
}
关闭所有窗口并退出
driver.quit()
Demo
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;
/**
* Created by 米阳 on 18/9/2017.
*/
public class BrowserActionsDemo {
@Test
public void openAndClosedBrowser() throws InterruptedException {
// 设置chromedriver系统变量
System.setProperty("webdriver.chrome.driver", "./drivers/chromedriver.exe");
// 启动chrome浏览器
WebDriver driver = new ChromeDriver();
// 为了看效果,线程等待5S
Thread.sleep(5000);
// 关闭所有窗口,并退出
driver.quit();
}
}
上面两个demo例子,最后看到的都是一样,浏览器关闭了,但事实是。close()是只关闭当前窗口,如果有多个窗口并未能关闭浏览器,我们可以查看到进程中“chromedriver.exe”的进程还在。而quit()则真正的结束测试,关闭所有窗口和浏览器并查看不到“chromedriver.exe”的进程。所以平时我们使用结束测试时,记得一定要使用quit(),避免系统资源被driver进程消耗。
打开网站(输入URL)
get()
driver.navigate().to();
这两个方法效果等同,除了代码量外,没区别,都是打开网站。
Demo
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.*;
/**
* Created by 米阳 on 18/9/2017.
*/
public class BrowserActionsDemo {
WebDriver driver;
@BeforeMethod
public void openChrome() {
// 设置chromedriver系统变量
System.setProperty("webdriver.chrome.driver", "./drivers/chromedriver.exe");
// 启动chrome浏览器
driver = new ChromeDriver();
}
@Test
public void getTest() {
// 打开百度首页
driver.get("https://www.baidu.com");
// 等同get()方法
driver.navigate().to("https://google.com");
}
@AfterMethod
public void closedChrome() throws InterruptedException {
// 为了看效果,线程等待5S
Thread.sleep(5000);
// 关闭所有窗口,并退出
driver.quit();
}
}
我们把TesNG的BeforeMethod和AfterMethod加到这个demo中来,再每个Test执行之前先去打开Chrome浏览器,Test执行之后等待5S钟关闭浏览器。
Demo中的Test我们通过调用WebDriver的get()方法并传入百度地址打开了百度首页。
注意:
1. 在调用get()方法时,传入的地址不能缺少协议,如http,https不能缺少。
2. get()方法一定会等页面加载完成
浏览器后退操作
driver.navigate().back();
Demo
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.*;
/**
* Created by 米阳 on 18/9/2017.
*/
public class BrowserActionsDemo {
WebDriver driver;
@BeforeMethod
public void openChrome() {
// 设置chromedriver系统变量
System.setProperty("webdriver.chrome.driver", "./drivers/chromedriver.exe");
// 启动chrome浏览器
driver = new ChromeDriver();
}
@Test
public void backTest() throws InterruptedException {
// 打开百度首页
driver.get("https://www.baidu.com");
// 等同get()方法
driver.navigate().to("https://google.com");
// 为了看清楚效果,等待2S
Thread.sleep(2000);
// 浏览器后退
driver.navigate().back();
}
@AfterMethod
public void closedChrome() throws InterruptedException {
// 为了看效果,线程等待5S
Thread.sleep(5000);
// 关闭所有窗口,并退出
driver.quit();
}
}
浏览器前进操作
driver.navigate().forward();
Demo
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.*;
/**
* Created by 米阳 on 18/9/2017.
*/
public class BrowserActionsDemo {
WebDriver driver;
@BeforeMethod
public void openChrome() {
// 设置chromedriver系统变量
System.setProperty("webdriver.chrome.driver", "./drivers/chromedriver.exe");
// 启动chrome浏览器
driver = new ChromeDriver();
}
@Test
public void backTest() throws InterruptedException {
// 打开百度首页
driver.get("https://www.baidu.com");
// 等同get()方法
driver.navigate().to("https://google.com");
// 为了看清楚效果,等待2S
Thread.sleep(2000);
// 浏览器后退
driver.navigate().back();
// 为了看清楚效果,等待2S
Thread.sleep(2000);
// 浏览器前进
driver.navigate().forward();
}
@AfterMethod
public void closedChrome() throws InterruptedException {
// 为了看效果,线程等待5S
Thread.sleep(5000);
// 关闭所有窗口,并退出
driver.quit();
}
}
页面刷新
driver.navigate().refresh();
Demo
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.*;
/**
* Created by 米阳 on 18/9/2017.
*/
public class BrowserActionsDemo {
WebDriver driver;
@BeforeMethod
public void openChrome() {
// 设置chromedriver系统变量
System.setProperty("webdriver.chrome.driver", "./drivers/chromedriver.exe");
// 启动chrome浏览器
driver = new ChromeDriver();
}
@Test
public void refreshTest(){
// 打开百度首页
driver.get("http://www.baidu.com");
// 刷新当前页面
driver.navigate().refresh();
}
@AfterMethod
public void closedChrome() throws InterruptedException {
// 为了看效果,线程等待5S
Thread.sleep(5000);
// 关闭所有窗口,并退出
driver.quit();
}
}
浏览器窗口大小设置
最大化
driver.manage().window().maximize();
设置大小
Dimension dimension = new Dimension(900, 800);
driver.manage().window().setSize(dimension);
获取大小
driver.manage().window().getSize();
设置窗口位置
Point point = new Point(500, 600);
driver.manage().window().setPosition(point);
获取窗口位置
driver.manage().window().getPosition();
全屏
driver.manage().window().fullscreen();
Demo
import org.openqa.selenium.Dimension;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.*;
/**
* Created by 米阳 on 18/9/2017.
*/
public class BrowserActionsDemo {
WebDriver driver;
@BeforeMethod
public void openChrome() {
// 设置chromedriver系统变量
System.setProperty("webdriver.chrome.driver", "./drivers/chromedriver.exe");
// 启动chrome浏览器
driver = new ChromeDriver();
}
@Test
public void windowTest() throws InterruptedException {
// 设置浏览器大小
Dimension dimension = new Dimension(900, 800);
driver.manage().window().setSize(dimension);
// 为了看清楚效果,等待2S
Thread.sleep(2000);
// 获取窗口大小
Dimension dimension1 = driver.manage().window().getSize();
int h = dimension1.getHeight();
int w = dimension1.getWidth();
System.out.println("h:" + h + "w:" + w);
// 为了看清楚效果,等待2S
Thread.sleep(2000);
// 最大化
driver.manage().window().maximize();
// 为了看清楚效果,等待2S
Thread.sleep(2000);
// 设置窗口位置,相对屏幕左下角
Point point = new Point(500, 600);
driver.manage().window().setPosition(point);
// 为了看清楚效果,等待2S
Thread.sleep(2000);
// 获取窗口位置,相对屏幕左下角
Point point1 = driver.manage().window().getPosition();
int x = point1.getX();
int y = point1.getY();
System.out.println("x:" + x + "y:" + y);
// 为了看清楚效果,等待2S
Thread.sleep(2000);
// 全屏
driver.manage().window().fullscreen();
}
@AfterMethod
public void closedChrome() throws InterruptedException {
// 为了看效果,线程等待5S
Thread.sleep(5000);
// 关闭所有窗口,并退出
driver.quit();
}
}
控制台输出:
image.png注意:如果遇到无法操作浏览器,这时得检查下driver版本和浏览器版本是否匹配
获取URL 地址
driver.getCurrentUrl();
该方法返回一个String类型。
Demo
import org.openqa.selenium.Dimension;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* Created by 米阳 on 18/9/2017.
*/
public class BrowserActionsDemo {
WebDriver driver;
@BeforeMethod
public void openChrome() {
// 设置chromedriver系统变量
System.setProperty("webdriver.chrome.driver", "./drivers/chromedriver.exe");
// 启动chrome浏览器
driver = new ChromeDriver();
}
@Test
public void getURLTest() {
driver.get("https://www.baidu.com");
String url = driver.getCurrentUrl();
System.out.println("获取到的URL:" + url);
}
@AfterMethod
public void closedChrome() throws InterruptedException {
// 为了看效果,线程等待5S
Thread.sleep(5000);
// 关闭所有窗口,并退出
driver.quit();
}
}
控制台输出:
image.png欢迎关注个人公众号:
个人公众号
网友评论