我使用Winapp驱动程序来使用java控制windows桌面应用程序。自动化运行良好,但我正在寻找一种实现Page对象模型的方法。这是我目前正在使用的。
我不能使用selenium的标准Page对象,因为我不能让它与Winapp驱动程序一起工作,它会在Null指针异常下崩溃。有没有人有一个如何实现这一点的例子。
发布于 2020-06-30 07:27:33
Page对象只是用于创建用于UI操作的API的设计模式。

您所要做的就是为页面对象提供一种获取低级别UI操作工具(如Selenium )的方法。例如,通过一个辛格尔顿。
class MyTests {
@Test
fun test1 {
val page = FactoryOfPageObjects.newPage("login");
val homePage = page.login("user", "1234");
assertTrue(homePage.amILogged());
}
}
class LogiPage {
val driver = // You can inject any implementation of Driver here
fun login(username, password) {
driver.find("#usernameField").insert(username);
driver.find("#passwordField").insert(password);
driver.find("#loginButton").click;
return new LoggedPage(driver);
}
}
interface Driver {
void insert(text);
void click();
}
class SeleniumDriver implements Driver {...}
class AppiumDriver implements Driver {...}看看上面您的测试和页面对象是如何不知道在运行时使用哪个驱动程序的低级实现的。这意味着,如果您已经有了一个没有页面对象的工作实现,您可以简单地重构它以隔离对驱动程序派生程序的所有引用。
有关它的更多细节,请参见马丁·福威尔()职位。
(今后的编辑注意:如果您提供没有页面对象的工作实现,社区可以帮助您重构它,以便将低级别的细节与测试和页面对象隔离开来)。
https://sqa.stackexchange.com/questions/45096
复制相似问题