selenium webdriver(1)---浏览器操作

启动浏览器

如何启动浏览器已在上篇文章中说明,这里还是以chrome为例,firefox、IE启动方式相同。

 1 //启动浏览器

 2 

 3 import org.openqa.selenium.WebDriver;

 4 import org.openqa.selenium.chrome.ChromeDriver;

 5 /*启动IE需要的包

 6 import org.openqa.selenium.ie.InternetExplorerDriver;

 7 启动firefox需要的包

 8 import org.openqa.selenium.firefox.FirefoxDriver;*/

 9 public class NewTest{

10     public static void main(String[] args) {

11         

12         //设置chromedriver地址

13         

14         System.setProperty ( "webdriver.chrome.driver" , "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe" );

15         

16         //driver即为浏览器对象

17         WebDriver driver = new ChromeDriver();

18  

19     }

20 }

 

浏览器的操作方法可以在WebDriver.class中找到接口说明,本文主要关注Navigation和Window接口中的方法。

selenium webdriver(1)---浏览器操作

最大化浏览器

maximize方法无需参数也没有返回值,直接使用即可

 1 import org.openqa.selenium.WebDriver;

 2 import org.openqa.selenium.chrome.ChromeDriver;

 3 

 4 public class NewTest{

 5     public static void main(String[] args) {

 6 

 7         System.setProperty ( "webdriver.chrome.driver" , "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe" );

 8 

 9        WebDriver driver = new ChromeDriver();

10        //最大化浏览器

11        driver.manage().window().maximize();

12     }

13 }

 

设置和获取浏览器大小

设置浏览器的大小有两个比较常见的用途:

1.多浏览器操作时方便在屏幕上查看

2.方便测试不同浏览器大小下样式的展示,例如移动端页面的显示可以将浏览器大小设置为350*600

设置浏览器大小使用setSize方法,需要Dimension对象作为参数,获取当前浏览器窗口的大小使用getSize方法,返回Dimension对象。Dimension位于org.openqa.selenium包中并提供了getHeight和getWidth方法输出高宽。

selenium webdriver(1)---浏览器操作

 1 //设置和获取浏览器大小

 2 import org.openqa.selenium.WebDriver;  

 3 import org.openqa.selenium.chrome.ChromeDriver;  

 4 //导入Dimension

 5 import org.openqa.selenium.Dimension;

 6 public class NewTest  

 7 {  

 8   public static void main(String[] args)  

 9   {    

10       Dimension dimensio;

11       Dimension browserSize=new Dimension(350,600);

12       System.setProperty("webdriver.chrome.driver","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");

13       WebDriver driver = new ChromeDriver();

14       //设置浏览器大小

15       driver.manage().window().setSize(browserSize);

16       //获取当前浏览器大小

17       dimensio=driver.manage().window().getSize();

18       //输出

19       System.out.print("浏览器当前高度为"+dimensio.getHeight()+";浏览器当前宽度为"+dimensio.getWidth());

20   }  

21 }

 

访问连接、获取当前url和title

两种方式可以访问链接,get方法和navigate().to方法,前者较常用。获取当前页面的url和title在测试重定向的页面时有很大的作用。

 1 import org.openqa.selenium.WebDriver;  

 2 import org.openqa.selenium.chrome.ChromeDriver;  

 3 

 4 public class NewTest  

 5 {  

 6   public static void main(String[] args)  

 7   {    

 8       System.setProperty("webdriver.chrome.driver","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");

 9       WebDriver driver = new ChromeDriver();

10       

11       driver.get("http://anjuke.com");

12       System.out.println("URL="+driver.getCurrentUrl()+";title="+driver.getTitle());

13       

14       driver.navigate().to("http://www.baidu.com");

15       System.out.println("URL="+driver.getCurrentUrl()+";title="+driver.getTitle());

16   }  

17 }
注意get和navigate().to方法用的是HTTP GET请求,输入的连接中必须加上http://前缀。
浏览器的前进、后退和刷新

这三个功能并不常用,了解就行了

 1 import org.openqa.selenium.WebDriver;  

 2 import org.openqa.selenium.chrome.ChromeDriver;  

 3 

 4 public class NewTest  

 5 {  

 6   public static void main(String[] args)  

 7   {    

 8       System.setProperty("webdriver.chrome.driver","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");

 9       WebDriver driver = new ChromeDriver();

10       

11       driver.get("http://anjuke.com");

12       driver.navigate().to("http://www.baidu.com");

13       //后退到anjuke.com

14       driver.navigate().back();

15       //前进到baidu.com

16       driver.navigate().forward();

17       //刷新当前页面

18       driver.navigate().refresh();

19   }  

20 } 

 

浏览器窗口之间的切换

浏览器窗口之间的切换是常用的功能,webdriver提供了switchTo方法实现窗口之间的切换,使用这个方法需要提供浏览器窗口的Handle,具体实现如下

 1 import java.util.Set;

 2 import org.openqa.selenium.By;

 3 import org.openqa.selenium.WebDriver;

 4 import org.openqa.selenium.chrome.ChromeDriver;

 5 import org.openqa.selenium.WebElement;

 6 

 7 public class NewTest{

 8     public static void main(String[] args) {

 9 

10        System.setProperty ( "webdriver.chrome.driver" , 

11        "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe" );

12        WebDriver driver = new ChromeDriver();

13        driver.get("http://baidu.com");

14        //获得输入框对象

15        WebElement input=driver.findElement(By.xpath("//input[@id='kw1']"));

16        //搜索安居客

17        input.sendKeys("anjuke");

18        //获得提交按钮对象

19        WebElement button=driver.findElement(By.xpath("//input[@id='su1']"));

20        button.click();

21        //这里必须设定一个暂停时间,百度搜索结果页面加载的速度没有程序执行的速度快

22        //等待2S以等页面加载完成

23        try {

24            Thread.sleep(2000); 

25          } catch (InterruptedException e) {

26            System.out.print(e.toString());

27          }  

28        //获取第一个搜索结果

29        WebElement a=driver.findElement(By.xpath("//div[@id='1']/h3/a"));

30        a.click();

31        //获取当前浏览器窗口标识

32        String currentHandle=driver.getWindowHandle();

33        //获取所有浏览器窗口标识

34        Set<String> handles=driver.getWindowHandles();

35        for(String handle:handles){

36            if(handle.equals(currentHandle))

37                continue;

38            else

39                driver.switchTo().window(handle);

40        }

41        

42       System.out.println(driver.getCurrentUrl());

43       //清楚driver对象

44       driver.quit();

45     }

46 }

 

很多时候我们需要通过新开窗口的名称来切换窗口,只需要把上面的代码稍做修改,将切换窗口的功能封装成一个函数即可,请看

 1 import java.util.Set;

 2 import org.openqa.selenium.By;

 3 import org.openqa.selenium.WebDriver;

 4 import org.openqa.selenium.chrome.ChromeDriver;

 5 import org.openqa.selenium.WebElement;

 6 

 7 public class NewTest{

 8     public static void main(String[] args) {

 9 

10        System.setProperty ( "webdriver.chrome.driver" , 

11        "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe" );

12        WebDriver driver = new ChromeDriver();

13        driver.get("http://baidu.com");

14        //获得输入框对象

15        WebElement input=driver.findElement(By.xpath("//input[@id='kw1']"));

16        //搜索安居客

17        input.sendKeys("anjuke");

18        //获得提交按钮对象

19        WebElement button=driver.findElement(By.xpath("//input[@id='su1']"));

20        button.click();

21        //这里必须设定一个暂停时间,百度搜索结果页面加载的速度没有程序执行的速度快

22        //等待2S以等页面加载完成

23        try {

24            Thread.sleep(2000); 

25          } catch (InterruptedException e) {

26            System.out.print(e.toString());

27          }  

28        //获取第一个搜索结果

29        WebElement a=driver.findElement(By.xpath("//div[@id='1']/h3/a"));

30        a.click();

31        driver=switchWindow(driver,"上海二手房");

32      

33        System.out.println("成功切换到"+driver.getTitle());

34 

35        driver.quit();

36     }

37     

38     private static WebDriver switchWindow(WebDriver dr,String winTitle){

39         //获取当前浏览器窗口标识

40         String currentHandle=dr.getWindowHandle();

41         //获取所有浏览器窗口标识

42         Set<String> handles=dr.getWindowHandles();

43         for(String handle:handles){

44            if(handle.equals(currentHandle))

45                continue;

46            else{

47               dr.switchTo().window(handle);

48               if(dr.getTitle().contains(winTitle)){

49                  break;

50               }else

51                   continue;

52            }

53         }

54         return dr;

55     }

56 }

 

关闭浏览器窗口

直接调用close方法即可,quit方法是用来退出driver的,每一次启动chrome都会启动一个chrome.drivre进程,需使用quit方法退出。

 1 import org.openqa.selenium.WebDriver;

 2 import org.openqa.selenium.chrome.ChromeDriver;

 3 

 4 public class NewTest{

 5     public static void main(String[] args) {

 6 

 7        System.setProperty ( "webdriver.chrome.driver" , 

 8        "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe" );

 9        WebDriver driver = new ChromeDriver();

10        driver.get("http://baidu.com");

11        driver.close();

12        driver.quit();

13 }

 

你可能感兴趣的:(webdriver)