private void startWebdriver() throws UIException{
//2) Prevent re-use.
if(UIHandlerWD.this.profile == null)
throw new
UIException(
UIException.Code.UI,
"Webdriver instance cannot be instantiated."
);
//3) Configure Selenium Webdriver.
if (this.profile.browserType.equalsIgnoreCase("*firefox")){
FirefoxProfile fProfile = new FirefoxProfile();
// profile.SetPreference("network.http.phishy-userpass-length", 255);
fProfile.setAcceptUntrustedCertificates(true);
DesiredCapabilities dc = DesiredCapabilities.firefox();
dc.setJavascriptEnabled(true);
dc.setCapability(FirefoxDriver.PROFILE, fProfile);
//this.webdriver = new FirefoxDriver(dc);
this.webdriver = new FirefoxDriver(dc);
}
else if (this.profile.browserType=="INTERNETEXPLORER")
this.webdriver = new InternetExplorerDriver();
else
throw new
UIException(
UIException.Code.UI,
"Unknown browser type '" + this.profile.browserType +"'."
);
//4) Start Webdriver.
this.webdriver.get(this.profile.getURL().toString());
this.webdriver.manage().timeouts().
implicitlyWait(5, TimeUnit.SECONDS);
this.webdriver.manage().timeouts().
pageLoadTimeout(this.profile.timeout, TimeUnit.SECONDS);
}
void stopWebdriver() {
if(this.webdriver != null){
try{
Thread.sleep(5000);
}
catch (Exception e) {
// TODO: handle exception
}
this.webdriver.close();
}
this.webdriver = null;
this.profile = null;
}
答案 0 :(得分:18)
将webdriver.quit()
添加到@AfterClass
方法。
close()将关闭当前活动窗口。如果当前活动窗口是最后一个窗口,则它在功能上等同于执行quit()。
但是,它需要有一个有效的活动会话才能执行此操作。如果你的测试失败,那个会话可能已经死了,所以当你调用close()时,它不知道在哪里发送命令并抛出异常。
quit()将结束所有会话并关闭所有客户端,它基本上是一个清理所有命令。如果所有客户/会话都已关闭/结束,它也不会抛出任何异常。