我们真的需要在 Selenium Java 的方法中实例化构造函数吗?
Do we really need to instantiate the constructor in a method for Selenium Java?
在JavaSelenium中为什么需要在方法中实例化构造函数?
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);
}
}
上面的不是和下面的一样有效吗:
public class Navigation extends BasePage {
public Navigation(WebDriver driver) {
super(driver);
}
public void visitUsSite() {
driver.navigate().to("https://www.randomwebsite.com");
}
}
您不必 return class 的实例,但在许多情况下它非常有用。
正如@Grasshopper 在评论中所写,创建一个 class 的实例与您打开的新页面相对应是很有用的。例如,您有一个包含以下内容的登录页面:
1)用户名字段
2)密码字段
3) 登录按钮
用户名和密码的输入方法如下:
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
}
}
然后你有一个点击登录按钮的方法,它将你重定向到,比方说,主页。
public HomePage clickLoginButton () {
WebElement loginButton = driver.findElementBy...;
loginButton.click();
return new HomePage(driver); // returns a new instance on the HomePage because homepage will be opened
}
关于 returning 'this' 实例和 returning 一个新实例的最酷的事情是,在你的测试中 class,你可以在之后使用你的方法另一个,没有凌乱的代码:
LoginPage loginPage = new LoginPage(driver);
loginPage.enterUsername("username")
.enterPassword("password");
HomePage homepage = loginPage.clickLoginButton();
在JavaSelenium中为什么需要在方法中实例化构造函数?
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);
}
}
上面的不是和下面的一样有效吗:
public class Navigation extends BasePage {
public Navigation(WebDriver driver) {
super(driver);
}
public void visitUsSite() {
driver.navigate().to("https://www.randomwebsite.com");
}
}
您不必 return class 的实例,但在许多情况下它非常有用。 正如@Grasshopper 在评论中所写,创建一个 class 的实例与您打开的新页面相对应是很有用的。例如,您有一个包含以下内容的登录页面: 1)用户名字段 2)密码字段 3) 登录按钮
用户名和密码的输入方法如下:
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
}
}
然后你有一个点击登录按钮的方法,它将你重定向到,比方说,主页。
public HomePage clickLoginButton () {
WebElement loginButton = driver.findElementBy...;
loginButton.click();
return new HomePage(driver); // returns a new instance on the HomePage because homepage will be opened
}
关于 returning 'this' 实例和 returning 一个新实例的最酷的事情是,在你的测试中 class,你可以在之后使用你的方法另一个,没有凌乱的代码:
LoginPage loginPage = new LoginPage(driver);
loginPage.enterUsername("username")
.enterPassword("password");
HomePage homepage = loginPage.clickLoginButton();