gpt4 book ai didi

java - 使用静态的 Selenium 框架

转载 作者:行者123 更新时间:2023-12-01 11:30:39 24 4
gpt4 key购买 nike

我正在编写一个 Selenium 框架,对于 Java 知识相对较少的测试人员来说,它应该非常容易使用和编写测试。为了使框架尽可能对用户友好,我注意到我编写了很多静态内容,以便测试人员不必每次都实例化页面对象和方法。这当然违背了OOP的原则。在我深入研究这个问题之前,我想看看我的方法是否有可行的替代方案。我在下面包含了实例化 Webdriver Singleton 的登录页面类,该类具有用户名/密码字段和登录按钮。此页面有 2 个使用 TestNG 运行的测试。所有要遵循的代码:

LoginPage.java

public class LoginPage {

public static WebDriver driver;
private static String username_selector = "username";
private static String password_selector = "password";
private static String login_button_selector = "#loginbutton > input";
private static String fail_message_selector = "error";


public static void goTo(String environment_url){
driver = Driver.getDriver();
driver.get(environment_url);
}

public static void loginAs(String username, String password){
WebElement user = driver.findElement(By.name(username_selector));
user.clear();
user.sendKeys(username);
WebElement pass = driver.findElement(By.name(password_selector));
pass.clear();
pass.sendKeys(password);
WebElement loginBtn = driver.findElement(By.cssSelector(login_button_selector));
loginBtn.click();
}

public static boolean loginErrorDisplayed(){
WebElement failMessageContainer = driver.findElement(By.className(fail_message_selector));
if(failMessageContainer.isDisplayed()){
return true;
}
else return false;
}

public static String getLoginErrorMessage(){
WebElement failMessageContainer = driver.findElement(By.className(fail_message_selector));
String failMessage = failMessageContainer.getText();
return failMessage;
}

}

驱动程序.java

public class Driver {
public static WebDriver driver = null;

public static WebDriver getDriver(){
if(driver == null){
driver = new FirefoxDriver();
}

return driver;
}

public static void killDriver(){
driver.quit();
}
}

LoginTest.java

public class LoginTest {

@Test(priority = 0)
public void loginfail() {
LoginPage.goTo("http://127.0.0.1:8080/login");
LoginPage.loginAs("wrong username", "wrongpassword");
boolean didLoginFail = LoginPage.loginErrorDisplayed();
Assert.assertTrue(didLoginFail == true, "Bad login was successful");
if (didLoginFail){
LoginPage.getLoginErrorMessage();
}
}

@Test(priority = 1)
public void loginsuccess() {
LoginPage.loginAs("correct_username", "correctpass");
boolean didLoginFail = LoginPage.loginErrorDisplayed();
Assert.assertTrue(didLoginFail == false, "Valid Login was unsuccessful");
}

}

最佳答案

这不是您问题的答案,但这将帮助您创建完美的 selenium 框架。

我建议您创建一个具有常见 API(例如 goTo() API)的 AbstractTestPage.java。您的所有页面(例如 LoginPage.java)都应该扩展 AbstractTestPage.java 以实现代码可重用性。

例如:

public abstract class AbstractTestPage {

public static WebDriver driver;

public static void goTo(String environment_url){
driver = Driver.getDriver();
driver.get(environment_url);
}

}

public class LoginPage extends AbstractTestPage {

.
.
.
.
.
.
}

关于java - 使用静态的 Selenium 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30422799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com