状況に応じて、基本的に 2 つの方法があります。
状況 1: WebDriver の拡張は現実的なオプションではありません。
これは最も一般的な状況です。 WebDriver が終了したかどうかを知る便利な方法を必要とする実際の作業状況で Selenium を使用するほとんどの開発者は、既に確立されたテスト フレームワークで作業しており、フレームワークをリファクタリングして、WebDriver のカスタム拡張機能のみが使用されるようにしようとしている可能性があります。価値以上のトラブル。
RemoteWebDriver#stopClient()
この場合、オーバーライドはオプションではないため、Sajan の回答と Gili の推奨する回答は役に立ちませ ん。(その上、たとえそうであったとしても、ほとんどの人は単純な答えを探しています。)
Selenium に付属する WebDriver の標準実装 (FirefoxDriver、ChromeDriver、InternetExplorerDriver、SafariDriver など) のみを使用している限り、WebDriver を RemoteWebDriver にキャストしてから、sessionId が null かどうかを確認できます (Pat は右側にありました)。追跡しますが、sessionId を直接呼び出す方が を使用するよりも優れていますtoString()
)。
public static boolean hasQuit(WebDriver driver) {
return ((RemoteWebDriver)driver).getSessionId() == null;
}
RemoteWebDriver を実装していない WebDriver をどのくらいの頻度で使用するのでしょうか。(あまり頻繁ではありません。)
状況 2: WebDriverを現実的に拡張できます。
このような状況はあまり一般的ではありませんが、おそらく次のいずれかです:
(a) 適切に設計され、抽象化されたフレームワークを使用するか、
(b) セレン テスト フレームワークをゼロから開始します。
この場合、WebDriver を拡張する独自のインターフェイスを作成できます。
public interface CustomDriver extends WebDriver {
boolean hasQuit();
}
次に、標準の WebDriver を次のように拡張できます (この例では 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;
}
}