因此,我继承了一个自动化项目(基于Selenium / TestNG的JAVA11),他们希望对其进行重构,以将Fluent Design用于代码库,以便非编码人员更轻松地开始测试构建。有道理...但是...他们在整个页面地图工厂中都使用了嵌套JAVA类,并且仍然希望保持这种状态。
我对C#很好,但对JAVA和嵌套类的了解却不多。以下是我正在谈论的示例。他们基本上希望使用Fluent设计,因此,如果需要访问嵌套类,则可以在父类的using事件中调用它,这样就不会影响链。
我到处都在寻找Selenium的例子,但是很难找到一些例子。感谢您的协助。
\\Code Base
public class UserAdminPage
{
@SuppressWarnings("unused")
private static WebElement element = null;
public UserAdminPage(RemoteWebDriver driver)
{
PageFactory.initElements(driver,this);
}
public static UserAdminPage using(RemoteWebDriver driver)
{
return new UserAdminPage(driver);
}
public static class AddEditUserInformation
{
@FindBy(name = "firstName")
public WebElement FirstName_txtbx;
public UserAdminPage FirstName_txtbx(String firstname)
{
this.FirstName_txtbx.sendKeys(firstname);
return this;
}
@FindBy(name = "lastName")
public WebElement LastName_txtbx;
public AddEditUserInformation LastName_txtbx(String lastname)
{
this.LastName_txtbx.sendKeys(lastname);
return this;
}
}
@FindBy(id = "accountsList")
public WebElement accountName_dropdwn;
public void accountName_dropdwn()
{
this.accountName_dropdwn.click();
}
@FindBy(id = "Save_button")
public WebElement Save_btn;
public void Save_btn()
{
this.Save_btn.click();
}
}
\\Test Event
UserAdminPage.using(driver).accountName_dropdwn()
.AddEditUserInformation.FirstName_txtbx("John")
.AddEditUserInformation.LastName_txtbx("Doe")
.Save_btn()