CucumberException:在运行测试时无法实例化类stepDefinitions

时间:2019-06-25 06:43:53

标签: java selenium automated-tests cucumber autotest

请帮助。我认为初始化页面时出现错误

<xsl:strip-space elements="*"/>

public class AuthStepDefinitions {

private final AuthPage authPage = new AuthPage();

@When("^user on Auth Page$")
public void onAuthPage() {
    AuthPage.getStartPage();
}

public class AuthPage extends TestBase {

private String loginPassrod = "test@test.test";

@FindBy(id = "USER_LOGIN")
private WebElement loginInput;

@FindBy(id = "USER_PASSWORD")
private WebElement userPassword;

@FindBy(className = "btn")
private WebElement btnEntrance;

@FindBy(css = "table.dataTable")
private WebElement table;

@FindBy(css = "a.button-new")
private WebElement create;

@FindBy(className = "sidebar-profile")
private WebElement profile;

public AuthPage() {
    PageFactory.initElements(new HtmlElementDecorator(new HtmlElementLocatorFactory(driver)), this);
}

我认为这里有问题

public abstract class TestBase {

/**
 * Default timeout for waiting
 */
private static final int ELEMENT_TIMEOUT_SECONDS = 20;

protected static WebDriver driver;
JavascriptExecutor js = (JavascriptExecutor) driver;

public void setup() {
    System.setProperty("webdriver.chrome.driver", BaseProperties.driverDir );
    driver = new ChromeDriver();
    driver.manage().window().maximize();
}

protected static void onMainPage() {
    driver.get("хxx");
}

以下信息可能会有所帮助

error

这是整个堆栈跟踪

    private final AuthPage authPage = new AuthPage();
    PageFactory.initElements(new HtmlElementDecorator(new HtmlElementLocatorFactory(driver)), this);
}

2 个答案:

答案 0 :(得分:0)

对我来说会有所帮助:

public AuthPage() {
        super.setup();
        PageFactory.initElements(driver, this);
    }

Pom.xml中的依赖关系已更新,并删除了不必要的内容。

仍然可以帮助https://www.toolsqa.com/selenium-cucumber-framework/page-object-design-pattern-with-selenium-pagefactory-in-cucumber/

答案 1 :(得分:-1)

在调用Pagefactory initElements方法时未初始化您的驱动程序。如下所示更新Authpage构造函数可以解决您的问题。

public AuthPage() {
    super.setup();
    TestBase.onMainPage();
    PageFactory.initElements(new HtmlElementDecorator(new HtmlElementLocatorFactory(TestBase.driver)), this);
}