私はCucumber/Javaを使用していくつかのセレン自動UIテストを作成しようとしています。フィーチャーファイルに1つのテストしかない場合、すべて正常に動作します。私は2番目のテストを追加した場合でも、私はdriver.get()
に、このエラーを取得する:SessionNotFoundException:セッションIDがnullです。 quit()を呼び出した後でWebDriverを使用していますか? (Selenium)
org.openqa.selenium.remote.SessionNotFoundException: Session ID is null. Using WebDriver after calling quit()?
Build info: version: '2.51.0', revision: '1af067dbcaedd7d2ab9af5151fc471d363d97193', time: '2016-02-05 11:20:57'
基本的に、私は1つのパッケージにInitializeWebdriverクラスにwebdriverを変数を初期化しています、その後、他の(ステップの定義)クラスでそれを参照します。私はInitializeWebdriverクラスの一部として以下に挙げたステップ定義を持っていましたが、別のクラスの別のステップに移動するまでうまくいきました。そのステップをCommonSteps.javaファイルに移動して@Before
のif (driver.equals(null))
を実行して、すでに初期化されている場合は別のアクションを実行することを考えていましたが、他のアクションが何であるか分かりません。
tests.feature
Feature: Two tests
Background:
Given I navigate to "http://www.google.com"
Scenario: Test one
When something happens
Scenario: Test two
When something else happens
InitializeWebDriver:
は、ここに私のコードです。 Javaの
public class InitializeWebDriver {
public static WebDriver driver = null;
@Before
public void beforeScenario() {
driver = new ChromeDriver();
}
@After
public void afterScenario() {
driver.quit();
}
}
CommonSteps.java
import myPackage.InitializeWebDriver;
public class CommonSteps {
static WebDriver driver = InitializeWebDriver.driver;
@Given("^I navigate to \"([^\"]*)\"$")
public void i_navigate_to(String url) {
driver.get(value);
}
ありがとう!
うん、CommonSteps.javaで 'driver'を' InitializeWebDriver.driver'に変更すると修正されました。あなたが言ったように、しかし、素晴らしい解決策ではありません。私は主張のためにJunitを使用していますが、フックのためにCucumberを使用しています( 'cucumber.api.java.Before' /' After')。私はこれをどのように設定するのか分からないので、本当にどんな助けもスーパーに役立ちます。 – kroe761
この質問のタグを変更してみることができます。何かjunit関連のヘルプですか?確かに、セレンのwebdriverタグとselenium-chromedriverタグは必要ありません。なぜなら、これはテスト変数スコープの問題だからです。 –