配置好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()切换,则当前窗口永远是第一个窗口。