我得到下面的错误。我是Java的新手,因此任何帮助都将不胜感激。
Cannot invoke "org.openqa.selenium.WebDriver.get(String)" because "this.driver" is null
请参阅下面的代码:
package steps;
import io.cucumber.java.en.Given;
import io.github.bonigarcia.wdm.WebDriverManager;
import org.junit.After;
import org.junit.Before;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class hotelBookingFormPage {
public WebDriver driver;
@Before
public void startBrowser() {
WebDriverManager.chromedriver().setup();
driver = new ChromeDriver();
}
@After
public void closeBrowser() {
driver.close();
driver.quit();
}
@Given("I navigate to the hotel booking form page")
public void iNavigateToTheHotelBookingFormPage() {
driver.get("http://hotel-test.equalexperts.io/");
}
如有任何帮助,我们将不胜感激。
import org.junit.After;
import org.junit.Before;
有了这个,您将导入JUnit钩子注释,而不是Cucumber注释。所以Cucumber不知道你想在每个场景前后运行带注释的方法。
黄瓜注释在不同的包中:
import io.cucumber.java.en.Before;
import io.cucumber.java.en.After;
使用Chromedriver的Webdriver接口的强制转换仅在@Before步骤中声明(未使用(,其他步骤不知道。修改如下:
public class hotelBookingFormPage {
public WebDriver driver = new ChromeDriver();
@Before
public void startBrowser() {
WebDriverManager.chromedriver().setup();
}
@After
public void closeBrowser() {
driver.close();
driver.quit();
}
@Given("I navigate to the hotel booking form page")
public void iNavigateToTheHotelBookingFormPage() {
driver.get("http://hotel-test.equalexperts.io/");
}
公共类BaseClass{
//every time we need to open url and browser so we need to create variable for url an dbrowser
//we have to read url and browser so in base class create object of ReadConfigue class
ReadConfigue readconfigue=new ReadConfigue();
String url=readconfigue.getbaseurl(); //store getbaseurl and getbrowser in string
String browser=readconfigue.getbrowser();
public static WebDriver driver;
public static Logger logger;
//create method of launch broswer
@BeforeClass
public void setup()
{
String browser="Chrome";
switch(browser.toLowerCase())
{
case "Chrome":
WebDriverManager.chromedriver().setup();
driver=new ChromeDriver();
break;
/* case "msedge":
WebDriverManager.edgedriver().setup();
driver=new EdgeDriver();
break;
case "firefox":
WebDriverManager.firefoxdriver().setup();
driver=new FirefoxDriver();
break; */
default:
driver=null;
break;
}
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
// for logging create object of logger
//create static varible of logger outside class and intitize here
logger =LogManager.getLogger("AutomationFramework");
}
@AfterClass
public void tearDown()
{
driver.close();
driver.quit();
}