WedDriver重构

 

配置好selenium java环境,当启动chrome作selenium测试时,如果没有设置driver,则会出错,查看错误信息The path to the driver executable must be set by the webdriver.chrome.driver system property; 原来是没有预先设置chrome的地址故设置之,注意chromedriver.exe是google提供的驱动器需要另外下载并放在chrome安装目录下。同时设置chromedriver的地址(在.java源文件中显示设置chromedriver):

//设置chromedriver地址

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

WebDriver重构:

   public static WebDriver getWebDriver(){

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

      WebDriver driver= new ChromeDriver();

      driver.manage().window().maximize(); //窗口最大化

      return driver;

   }

如果需要在多个窗口直接切换,首先获取每个窗口的唯一标示符(句柄),通过窗口属性可以获取所有打开窗口的标示符,以集合的形式返回;以下示例(假设一共两个窗口):

     Set winHandels= driver.getWindowHandles();//得到当前所有窗口句柄set集合 

      List it = new ArrayList(winHandels);//将set集合存入list集合

      driver.switchTo().window(it.get(1));//切换到新弹出的窗口

     String url=driver.getCurrentUrl(); //获取新窗口的url

     System.out.println(url);

     driver.switchTo().window(it.get(0)); // 返回至原页面

(Set, List给泛型String,代码里写了就被过滤)

getWindowHandle() 获得当前窗口句柄

getWindowHandles() 返回的所有窗口的句柄到当前会话

switchTo().window() 用于切换到相应的窗口,与switchTo().frame()是类似,前者 用于不同窗口的切换,后者用于不同表单之间的切换。

driver new出来后,如果未通过driver.switchTo().window()切换,则当前窗口永远是第一个窗口。

原文地址:https://www.cnblogs.com/vanya/p/6742825.html