我一直在使用Selenium WebDriver为我曾经使用过的一些项目实现功能测试.我正在尝试使用Page Factory设计模式与Page Factory来分解我的定位器.我还创建了一个静态WaitTool对象(singleton),它使用可选的超时参数实现了几种等待技术.
我目前的问题是我想在PageFactory尝试初始化WebElements之前使用我的wait方法.我想等待的原因是因为PageFactory可能会尝试在页面元素可用之前初始化页面元素.
这是一个示例PageObject:
public class SignInPage extends PageBase {
@FindBy(id = "username")
@CacheLookup
private WebElement usernameField;
@FindBy(id = "password")
@CacheLookup
private WebElement passwordField;
@FindBy(name = "submit")
@CacheLookup
private WebElement signInButton;
public SignInPage(WebDriver driver) {
super(driver);
WaitTool.waitForPageToLoad(driver, this);
// I'd like initialisation to occur here
}
public MainPage signInWithValidCredentials(String username, String password){
return signIn(username, password, MainPage.class);
}
private <T>T signIn(String username, String password, Class<T> expectedPage) {
usernameField.type(username);
passwordField.type(password);
signInButton.click();
return PageFactory.initElements(driver, expectedPage);
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个示例TestObject:
public class SignInTest …Run Code Online (Sandbox Code Playgroud)