如果我的子步骤文件已经扩展 class,如何创建 MasterStep / BaseStep?
How to create a MasterStep / BaseStep if the my sub step files already extend a class?
如果我的子步骤文件已经扩展 class,如何创建 MasterStep / BaseStep?
我的步骤文件之一的示例代码:
public class LoginSteps extends DriverFactory {
WebDriver driver = getDriver();
@Given("^User navigates to the \"([^\"]*)\" website$")
public void user_navigates_to_the_website(String url) throws Throwable {
basePage.loadUrl(url);
}
@And("^User entered the \"([^\"]*)\" username$")
public void user_entered_the_username(String username) throws Throwable {
loginPage.setUsername(username);
}
@And("^User entered the \"([^\"]*)\" password$")
public void user_entered_the_password(String password) throws Throwable {
l
我需要在下面使用以下标签/代码,但我不想在每个步骤中重复 class/文件,当我尝试在我的 DriverFactory 中添加黄瓜标签时,我不允许这样做,因为黄瓜不允许你在扩展 classes.
中添加标签
@After
public void close_browser_window(Scenario scenario) throws Exception {
if (scenario.isFailed()) {
scenario.embed(((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES), "image/png");
}
}
感谢您的帮助
更新的答案:
将挂钩添加到一个单独的 class 中,它处理您所有的场景设置和拆卸之前/之后 -
public class Hooks {
private static WebDriver driver;
public static WebDriver getDriver() {
return driver;
}
@Before
public void startTest(Scenario scenario) {
driver = new DriverFactory("chrome");
}
@After
public void close_browser_window(Scenario scenario) throws Exception {
if (scenario.isFailed()) {
scenario.embed(((TakesScreenshot)
driver).getScreenshotAs(OutputType.BYTES), "image/png");
driver.close()
}
}
public class LoginSteps {
WebDriver driver = Hooks.getDriver();
//steps
}
要获得更高级的处理方式,请查看依赖注入,例如 PicoContainer,这样您就不必依赖挂钩中的静态 WebDriver 实例,而是可以将其传递到每个实例的构造函数中你的步数 classes.
如果我的子步骤文件已经扩展 class,如何创建 MasterStep / BaseStep?
我的步骤文件之一的示例代码:
public class LoginSteps extends DriverFactory {
WebDriver driver = getDriver();
@Given("^User navigates to the \"([^\"]*)\" website$")
public void user_navigates_to_the_website(String url) throws Throwable {
basePage.loadUrl(url);
}
@And("^User entered the \"([^\"]*)\" username$")
public void user_entered_the_username(String username) throws Throwable {
loginPage.setUsername(username);
}
@And("^User entered the \"([^\"]*)\" password$")
public void user_entered_the_password(String password) throws Throwable {
l
我需要在下面使用以下标签/代码,但我不想在每个步骤中重复 class/文件,当我尝试在我的 DriverFactory 中添加黄瓜标签时,我不允许这样做,因为黄瓜不允许你在扩展 classes.
中添加标签 @After
public void close_browser_window(Scenario scenario) throws Exception {
if (scenario.isFailed()) {
scenario.embed(((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES), "image/png");
}
}
感谢您的帮助
更新的答案:
将挂钩添加到一个单独的 class 中,它处理您所有的场景设置和拆卸之前/之后 -
public class Hooks {
private static WebDriver driver;
public static WebDriver getDriver() {
return driver;
}
@Before
public void startTest(Scenario scenario) {
driver = new DriverFactory("chrome");
}
@After
public void close_browser_window(Scenario scenario) throws Exception {
if (scenario.isFailed()) {
scenario.embed(((TakesScreenshot)
driver).getScreenshotAs(OutputType.BYTES), "image/png");
driver.close()
}
}
public class LoginSteps {
WebDriver driver = Hooks.getDriver();
//steps
}
要获得更高级的处理方式,请查看依赖注入,例如 PicoContainer,这样您就不必依赖挂钩中的静态 WebDriver 实例,而是可以将其传递到每个实例的构造函数中你的步数 classes.