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();
    }
}
相关文章
相关标签/搜索