私は、Serenity + cucumber + java + maven(> mvn archetype:generate -Dfilter net.serenity-bdd:serenity-cucumber)を使用してサンプルプロジェクトを作成しました。平静... Webdriverを入手するには?
それがFirefoxブラウザを立ち上げると、このウェブサイトに行くとき、私は見ることができます:
@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 driver"変数に到達するために宣言する必要がある構文は何ですか? ありがとう ノウナダ ===========
JDelorean!
ありがとうございました。ここにコードがあります..「ドライバー」に何が間違っているのかを教えてください。
1 - フィーチャーファイル: 特集:アマゾンユーザーのログイン認証 シナリオ: 考えると、ユーザが「ホーム」ページ
2上にあるアマゾンユーザーのログイン認証 - ステップ定義ファイル: パッケージcom.XXXX.steps ; import net.thucydides.core.annotations.Steps; import com.XXXX.steps.serenity.User; import 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();
}
}
これはドライバ管理に関連しています。別のを確認する[ここ](http://stackoverflow.com/questions/40130996/is-there-any-framework-which-supports-behaviour-driven-approch-bdd-for-seleniu) – user861594