如何啓動瀏覽器已在上篇文章中說明,這裏仍是以chrome爲例,firefox、IE啓動方式相同。java
//啓動瀏覽器 import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; /*啓動IE須要的包 import org.openqa.selenium.ie.InternetExplorerDriver; 啓動firefox須要的包 import org.openqa.selenium.firefox.FirefoxDriver;*/ public class NewTest{ public static void main(String[] args) { //設置chromedriver地址 System.setProperty ( "webdriver.chrome.driver" , "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe" ); //driver即爲瀏覽器對象 WebDriver driver = new ChromeDriver(); } }
瀏覽器的操做方法能夠在WebDriver.class中找到接口說明,本文主要關注Navigation和Window接口中的方法。web
maximize方法無需參數也沒有返回值,直接使用便可chrome
import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class NewTest{ public static void main(String[] args) { System.setProperty ( "webdriver.chrome.driver" , "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe" ); WebDriver driver = new ChromeDriver(); //最大化瀏覽器 driver.manage().window().maximize(); } }
設置瀏覽器的大小有兩個比較常見的用途:瀏覽器
1.多瀏覽器操做時方便在屏幕上查看函數
2.方便測試不一樣瀏覽器大小下樣式的展現,例如移動端頁面的顯示能夠將瀏覽器大小設置爲350*600測試
設 置瀏覽器大小使用setSize方法,須要Dimension對象做爲參數,獲取當前瀏覽器窗口的大小使用getSize方法,返回 Dimension對象。Dimension位於org.openqa.selenium包中並提供了getHeight和getWidth方法輸出高 寬。
ui
//設置和獲取瀏覽器大小 import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; //導入Dimension import org.openqa.selenium.Dimension; public class NewTest { public static void main(String[] args) { Dimension dimensio; Dimension browserSize=new Dimension(350,600); System.setProperty("webdriver.chrome.driver","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); //設置瀏覽器大小 driver.manage().window().setSize(browserSize); //獲取當前瀏覽器大小 dimensio=driver.manage().window().getSize(); //輸出 System.out.print("瀏覽器當前高度爲"+dimensio.getHeight()+";瀏覽器當前寬度爲"+dimensio.getWidth()); } }
兩種方式能夠訪問連接,get方法和navigate().to方法,前者較經常使用。獲取當前頁面的url和title在測試重定向的頁面時有很大的做用。
url
import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class NewTest { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("http://anjuke.com"); System.out.println("URL="+driver.getCurrentUrl()+";title="+driver.getTitle()); driver.navigate().to("http://www.baidu.com"); System.out.println("URL="+driver.getCurrentUrl()+";title="+driver.getTitle()); } }
注意get和navigate().to方法用的是HTTP GET請求,輸入的鏈接中必須加上http://前綴。spa
這三個功能並不經常使用,瞭解就好了firefox
import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class NewTest { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("http://anjuke.com"); driver.navigate().to("http://www.baidu.com"); //後退到anjuke.com driver.navigate().back(); //前進到baidu.com driver.navigate().forward(); //刷新當前頁面 driver.navigate().refresh(); } }
瀏覽器窗口之間的切換是經常使用的功能,webdriver提供了switchTo方法實現窗口之間的切換,使用這個方法須要提供瀏覽器窗口的Handle,具體實現以下
import java.util.Set; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.WebElement; public class NewTest{ public static void main(String[] args) { System.setProperty ( "webdriver.chrome.driver" , "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe" ); WebDriver driver = new ChromeDriver(); driver.get("http://baidu.com"); //得到輸入框對象 WebElement input=driver.findElement(By.xpath("//input[@id='kw1']")); //搜索安居客 input.sendKeys("anjuke"); //得到提交按鈕對象 WebElement button=driver.findElement(By.xpath("//input[@id='su1']")); button.click(); //這裏必須設定一個暫停時間,百度搜索結果頁面加載的速度沒有程序執行的速度快 //等待2S以等頁面加載完成 try { Thread.sleep(2000); } catch (InterruptedException e) { System.out.print(e.toString()); } //獲取第一個搜索結果 WebElement a=driver.findElement(By.xpath("//div[@id='1']/h3/a")); a.click(); //獲取當前瀏覽器窗口標識 String currentHandle=driver.getWindowHandle(); //獲取全部瀏覽器窗口標識 Set<String> handles=driver.getWindowHandles(); for(String handle:handles){ if(handle.equals(currentHandle)) continue; else driver.switchTo().window(handle); } System.out.println(driver.getCurrentUrl()); //清楚driver對象 driver.quit(); } }
不少時候咱們須要經過新開窗口的名稱來切換窗口,只須要把上面的代碼稍作修改,將切換窗口的功能封裝成一個函數便可,請看
import java.util.Set; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.WebElement; public class NewTest{ public static void main(String[] args) { System.setProperty ( "webdriver.chrome.driver" , "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe" ); WebDriver driver = new ChromeDriver(); driver.get("http://baidu.com"); //得到輸入框對象 WebElement input=driver.findElement(By.xpath("//input[@id='kw1']")); //搜索安居客 input.sendKeys("anjuke"); //得到提交按鈕對象 WebElement button=driver.findElement(By.xpath("//input[@id='su1']")); button.click(); //這裏必須設定一個暫停時間,百度搜索結果頁面加載的速度沒有程序執行的速度快 //等待2S以等頁面加載完成 try { Thread.sleep(2000); } catch (InterruptedException e) { System.out.print(e.toString()); } //獲取第一個搜索結果 WebElement a=driver.findElement(By.xpath("//div[@id='1']/h3/a")); a.click(); driver=switchWindow(driver,"上海二手房"); System.out.println("成功切換到"+driver.getTitle()); driver.quit(); } private static WebDriver switchWindow(WebDriver dr,String winTitle){ //獲取當前瀏覽器窗口標識 String currentHandle=dr.getWindowHandle(); //獲取全部瀏覽器窗口標識 Set<String> handles=dr.getWindowHandles(); for(String handle:handles){ if(handle.equals(currentHandle)) continue; else{ dr.switchTo().window(handle); if(dr.getTitle().contains(winTitle)){ break; }else continue; } } return dr; } }
直接調用close方法便可,quit方法是用來退出driver的,每一次啓動chrome都會啓動一個chrome.drivre進程,需使用quit方法退出。
import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class NewTest{ public static void main(String[] args) { System.setProperty ( "webdriver.chrome.driver" , "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe" ); WebDriver driver = new ChromeDriver(); driver.get("http://baidu.com"); driver.close(); driver.quit(); } }