我是一名相对较新的QA工程师,致力于学习Selenium(Java),我想使用页面对象来模拟我的页面.
目前,我正在这样做,我的页面对象类是静态变量(用于定位页面元素的对象)和静态方法(用于获取By对象和执行页面函数)的集合.这对我来说似乎是最简单的方法,因为我的方法不需要依赖任何实例变量,只需要依赖定位器.
我只是在我的测试代码中调用这些方法.
但是,我读到的关于页面对象的所有内容都涉及实例化它们并让方法返回页面对象.这似乎让一切变得更加复杂.例如,我没有一个登录方法,而是需要两个,一个用于登录成功,一个用于登录失败.
我知道它似乎是公认的最佳实践,但我想了解原因.谢谢.
这是我的pageObject代码,我的测试调用方法为 LoginPage.login(username, password);
package pageObjects;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
public class LogInPage {
private static By emailTxtB = By.id("user_email");
private static By passwordTxtB = By.id("user_password");
private static By logInButton =
By.xpath("/html/body/div/div[2]/form/div[2]/div[2]/div/button");
private static By signUpButton = By.xpath("/html/body/div/div[2]/form/div[2]/div[2]/div/a");
private static By valErrorMessage = By.id("flash_alert");
public static void logIn(WebDriver driver, String email, String password){
//Fill out form
driver.findElement(emailTxtB).sendKeys(email);
driver.findElement(passwordTxtB).sendKeys(password);
//Submit form
driver.findElement(logInButton).click();
}
public static void goToSignUp(WebDriver driver){
driver.findElement(signUpButton).click();
}
public static String getValErrorMessage(WebDriver driver){
return driver.findElement(valErrorMessage).getText(); …Run Code Online (Sandbox Code Playgroud)