あなたは、そのクラスのインスタンスを返す必要はありませんが、多くの場合、それは非常に便利です:
public class Navigation extends BasePage {
public Navigation(WebDriver driver) {
super(driver);
}
public Navigation visitUsSite() {
driver.navigate().to("https://www.randomwebsite.com"));
return new Navigation(driver);
}
}
は、以下のように上記と同じように有効ではありません。 @Grasshopperがコメントに書いているように、開いている新しいページに対応するクラスのインスタンスを作成すると便利です。
public class LoginPage extends BasePage {
public LoginPage (WebDriver driver) {
super(driver);
}
public LoginPage enterUsername(String username) {
WebElement usernameField = driver.findElementBy...;
usernameField.sendKeys(username);
return this; // returns this instance because it stays on the LoginPage
}
public LoginPage enterPassword (String password) {
WebElement passwordField = driver.findElementBy...;
passwordField.sendKeys(password);
return this; // returns this instance because it stays on the LoginPage
}
}
を: 1)ユーザ名フィールド 2)パスワードフィールド 3)ログインボタン
ユーザー名とパスワードを入力するための方法は次のとおりです。たとえば、次のものが含まログインページを持っています
次に、ログインボタンをクリックすると、ホームページにリダイレクトされる方法があります。
LoginPage loginPage = new LoginPage(driver);
loginPage.enterUsername("username")
.enterPassword("password");
HomePage homepage = loginPage.clickLoginButton();
:
「この」インスタンスを返すと、新しいインスタンスを返すについてのクールなことは、あなたのテストクラスでは、あなたが乱雑探して、コードを持たずに、あなたの方法を次々に使うことができることですなぜそれを試してみませんか? –
他のものは何も返しません。戻り値を使用しない場合、違いは*ありませんが、それらはまったく同じではありません。 Btw、あなたはコンストラクタを返さず、コンストラクタをインスタンス化しません。オブジェクトをインスタンス化するには、コンストラクタを使用(呼び出し/呼び出し)します。コンストラクタではなく、オブジェクトインスタンスがメソッドから返されます。 – GolezTrol
私は両方を実行し、両方とも動作します。私はちょうどなぜ多くのチュートリアルオンラインでメソッドのコンストラクタを返すように示唆していますか? – Samranator