私のサブステップファイルがすでにクラスを拡張している場合、MasterStep/BaseStepを作成する方法は?私のステップのいずれかのファイルのための私のサブステップファイルがすでにクラスを拡張している場合、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
は、私は以下の次のタグ/コードを使用する必要がありますが、私はすべてのステップのクラス/ファイル内で繰り返したいいけないとCucumber dosntは拡張クラス内にタグを追加できるので、DriverFactory内では許可されていません。あなたの助けのための
@After
public void close_browser_window(Scenario scenario) throws Exception {
if (scenario.isFailed()) {
scenario.embed(((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES), "image/png");
}
}
おかげ
'LoginSteps'は' DriverFactory'を拡張する理由を考えてみてください。それは本当に 'DriverFactory'の一種ですか?継承の代わりに合成を使用することを検討してください。 – azurefrog
@azurefrogありがとうございますが、他のクラスを初期化する場所が必要です。\t \t basePage = PageFactory.initElements(driver、BasePage.class); – Gbru
すべてのクラスでAfter hookコードを繰り返す必要はありません。どのクラスでもそれを言い、キュウリがそれを拾うでしょう。各シナリオに対して、すべてのステップ定義とフッククラスの新しいインスタンスが作成されます。 – Grasshopper