【发布时间】:2023-03-27 09:30:02
【问题描述】:
最近开始玩 Selenium 页面对象模式。我了解 Selenium 页面对象模式和 PageFactroy 的概念。但令我困惑的是它缺乏灵活性。例如,页面对象模式如何为简单的定位器参数提供支持? Selenium Page Object 模式如何处理动态定位器?
为了更好地理解这个问题,请采用以下场景。
我有我的登录页面。
public class LoginPage {
private final WebDriver driver;
public LoginPage(WebDriver driver) {
this.driver = driver;
}
By usernameLocator = By.id("username");
By passwordLocator = By.id("passwd");
By loginButtonLocator = By.id("login");
public HomePage loginAs(String username, String password) {
driver.findElement(usernameLocator).sendKeys(username);
driver.findElement(passwordLocator).sendKeys(password);
driver.findElement(loginButtonLocator).submit();
return new HomePage(driver);
}
}
我有我的主页。
public class HomePage {
private final WebDriver driver;
By usernameLocator = By.xpath("//span[contains(text(),'Welcome <LoggedInUserName>')]");
public HomePage(WebDriver driver) {
this.driver = driver;
}
public HomePage checkLoggedInUser(String username) {
// I want to parameterize the usernameLocator with the logged in username
driver.findElement(usernameLocator);
return this;
}
}
在主页中,我想检查包含文本“Welcome User1”的 span 标记。用户名可以根据登录的用户进行更改。我想用登录的用户名参数化主页中的 usernameLocator 。
我可以参数化 By 定位器并在运行时传递参数值吗?
【问题讨论】:
标签: java selenium selenium-webdriver automation pageobjects