【发布时间】:2022-01-27 05:02:12
【问题描述】:
我正在尝试使用 Cucumber/Java 编写一些 selenium 自动化 UI 测试。如果我的功能文件中只有一个测试,那么一切正常。但是如果我添加第二个测试,我会在driver.get() 上收到此错误:
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'
基本上,我在一个包中的 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
初始化WebDriver.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);
}
谢谢!
【问题讨论】:
-
我在使用
driver.quit()方法后尝试截屏时出现此错误。只好换线了。
标签: java selenium-webdriver selenium-chromedriver cucumber-jvm