基本上,您可以采取两种方法,具体取决于您的情况。
情况1:扩展WebDriver不是一个现实的选择。
这是最常见的情况。大多数在实际工作情况下使用Selenium的开发人员,他们想要一种方便的方式来判断WebDriver是否已经退出,他们正在一个已经建立的测试框架中工作,并且尝试重构框架以确保仅使用WebDrivers的自定义扩展可能比它的价值更麻烦。
在这种情况下,Sajan的答案和Gili对他的答案的建议将没有用,因为覆盖不是一种选择。(此外,即使是这样,大多数人也在寻找一个简单的答案。RemoteWebDriver#stopClient()
只要您只使用Selenium附带的WebDriver的标准实现(FirefoxDriver,ChromeDriver,InternetExplorerDriver,SafariDriver等),您就可以将WebDriver转换为RemoteWebDriver,然后检查sagementId是否为空(Pat在正确的轨道上,但直接调用specesitId比使用更好)。toString()
public static boolean hasQuit(WebDriver driver) {
return ((RemoteWebDriver)driver).getSessionId() == null;
}
这个答案应该适用于95%的情况,因为您打算多久使用一次不实现RemutsionWebDriver的WebDriver?(不经常。
情况2:您可以实际扩展WebDriver。
这种情况不太常见,但也许你是:
(a)使用一个精心设计和抽象的框架,或者
(b)从头开始一个硒测试框架。
在这种情况下,您可以创建自己的扩展 WebDriver 的接口:
public interface CustomDriver extends WebDriver {
boolean hasQuit();
}
然后你可以像这样扩展标准的WebDrivers(在这个例子中,ChromeDriver):
public class CustomChromeDriver extends ChromeDriver implements CustomDriver {
boolean hasQuit = false;
@Override
public boolean hasQuit() {
return hasQuit;
}
@Override
public void stopClient() {
super.stopClient();
hasQuit = true;
}
}