Serenity + cucumber + Java + maven ( > mvn archetype:generate -Dfilter net.serenity-bdd:serenity-cucumber) を使用してサンプル プロジェクトを作成しました。
Firefox ブラウザーが起動して、次の Web サイトに移動するタイミングを確認できます。
@DefaultUrl("http://en.wiktionary.org/wiki/Wiktionary")
質問: この時点から、「WebDriver ドライバー」が作成されましたが、その「ドライバー」変数を取得するにはどうすればよいですか? driver.getWindowHandle() を使用してウィンドウ ID を取得しようとしています。
更新: ステートメントは次のとおりです。
@DefaultUrl("http://en.wiktionary.org/wiki/Wiktionary")
public class DictionaryPage extends PageObject {...}
PageObject スーパークラスを調べたところ、次のことがわかりました。
public abstract class PageObject extends net.serenitybdd.core.pages.PageObject {
protected PageObject() {
super();
}
protected PageObject(WebDriver driver, Predicate<? super net.serenitybdd.core.pages.PageObject> callback) {
super(driver, callback);
}
public PageObject(WebDriver driver, int ajaxTimeout) {
super(driver, ajaxTimeout);
}
public PageObject(WebDriver driver) {
super(driver);
}
}
そのため、PageObject は別のスーパー クラスの webdriver 変数を使用します。この「Web ドライバー」変数を取得するために宣言する必要がある構文は何ですか? ありがとう ノウナダ =========================
Jデロリアン!
どうもありがとうございました。ここにコードがあります..「ドライバー」の何が問題なのかを指摘するのを手伝ってくれませんか?
1 - 機能ファイル: 機能: Amazon ユーザーのログイン認証 シナリオ: Amazon ユーザーのログイン認証 特定のユーザーが「ホーム」ページにいる場合
2 - ステップ定義ファイル: パッケージ com.XXXX.steps; net.thucydides.core.annotations.Steps をインポートします。com.XXXX.steps.serenity.User をインポートします。cucumber.api.java.en.Given をインポートします。
class DefinitionSteps {
@Steps
User user;
@Given("^user is on the \"([^\"]*)\" page$")
public void user_is_on_the_Amazon_page(String pageName)throws Throwable{
user.is_on_the_page(pageName);
}
}
3 - テスト ランナー クラス パッケージ com.XXXX;
import cucumber.api.CucumberOptions;
import net.serenitybdd.cucumber.CucumberWithSerenity;
import org.junit.runner.RunWith;
@RunWith(CucumberWithSerenity.class)
@CucumberOptions(features="src/test/resources/features")
public class DefinitionTestSuite {
}
4 - ドライバーをキャプチャーできないユーザー クラス。このファイルの最後で、コメントアウトされた行が機能しないことに注意してください。また、「ドライバー」は元のドライバー「home.getDriver()」に設定されていましたが、何らかの理由でその値が「ドライバー」に渡されましたが、ドライバー「home.getDriver()」は問題なく動作していることにも注意してください。
package com.XXXX.steps.serenity;
import com.XXXX.pages.Home;
import net.thucydides.core.annotations.Step;
import net.thucydides.core.steps.ScenarioSteps;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
public class User extends ScenarioSteps{
Home home = new Home();
WebDriver driver = home.getDriver();
@Step
public void is_on_the_page(String pageName) throws Throwable {
home.open();
home.getDriver().findElement(By.xpath(home.homeElements.get("Hello. Sign in"))).click();
// driver.findElement(By.xpath(".//*[@id='nav-link-yourAccount']/span[1]")).click();
}
}