RemoteWebDriver is null error (sauce labs implementation) -selenium,cucumber,java

RemoteWebDriver is null error (sauce labs implementation) -selenium,cucumber,java

我正在实现我的代码以在 Sauce Labs 的远程机器上工作。在我更改驱动程序初始化(以使用远程服务器)之前,代码工作正常。我不断收到 this.driver is null 异常。我不知道它出了什么问题,我正在关注官方文档并尝试了很多东西。我希望有人能在这里看到这个问题。先感谢您。我的代码:

DRIVER:(我的用户名和密钥是从我的 sauce labs 帐户复制而来的,并为此重命名)

public class Hooks {
    public RemoteWebDriver driver;
    public WebDriverWait wait;

    @Before
    public void setup(Scenario scenario) throws MalformedURLException {
        String username = System.getenv("my username");
        String accessKey = System.getenv("key");

        ChromeOptions chromeOpts = new ChromeOptions();
        MutableCapabilities sauceOpts = new MutableCapabilities();

        sauceOpts.setCapability("name", scenario.getName());
        sauceOpts.setCapability("username", username);
        sauceOpts.setCapability("accessKey",accessKey);

       MutableCapabilities browserOptions = new MutableCapabilities();
       browserOptions.setCapability(ChromeOptions.CAPABILITY, chromeOpts);
       browserOptions.setCapability("sauce:options", sauceOpts);
       browserOptions.setCapability("browserName", "chrome");
       browserOptions.setCapability("browserVersion", "latest");
       browserOptions.setCapability("platformName", "Windows 10");

       String sauceUrl = "https://ondemand.us-west-1.saucelabs.com:443/wd/hub";
       URL url = new URL(sauceUrl);
       driver = new RemoteWebDriver(url, browserOptions);
       wait = new WebDriverWait(driver, Duration.ofSeconds(10));



    }

    @After
    public void tearDown(Scenario scenario) {driver.quit();}
}

我的代码所在的页面对象:(为了保护隐私而缩短)

public class LandingPO extends Hooks {

 static RemoteWebDriver driver;
 static WebDriverWait wait;
 String url = "https://google.com"
 public void openUrl() {
        driver.get(url);}

然后我只是在我的 stepDefinition class 中调用此方法 (landingPO.openUrl();)。 在找到第一个驱动程序用法时抛出错误:

Step failed
java.lang.NullPointerException: Cannot invoke "org.openqa.selenium.remote.RemoteWebDriver.get(String)" because "pageObjects.LandingPO.driver" is null

它在我的 LandingPO

中的“driver.get(url)”处中断

如果有人遇到同样的问题,答案是:

我使用了错误的 Before/After 导入。正确的导入应该是:

进口io.cucumber.java.After; 导入 io.cucumber.java.Before;