selenium webdriver(1)—瀏覽器操做

啓動瀏覽器                                                                                                                                                                 
 

如何啓動瀏覽器已在上篇文章中說明,這裏仍是以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

webdriver

最大化瀏覽器                                                                                                                                                            

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

Dimension

//設置和獲取瀏覽器大小
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());
  }  
}

getsize

訪問連接、獲取當前Url和Title                                                                                                                                

兩種方式能夠訪問連接,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();
    }
}
相關文章
相關標籤/搜索