【发布时间】:2017-03-25 13:39:58
【问题描述】:
我正在遵循页面对象模型来自动化一个应用程序中的流程。在其中一个模块中,我必须声明页面标题和更多消息。截至目前,我将我的断言代码放在 PageFactory 本身中,如下所示:
public class EditPost {
WebDriver driver;
public EditPost(WebDriver editPostDriver)
{
this.driver=editPostDriver;
}
@FindBy(how=How.XPATH,using="//*[@id='message']/p")
WebElement post_published;
public void assert_message()
{
String actual_message_title=post_published.getText();
Assert.assertEquals(actual_message_title, "Post published. View post");
System.out.println("Message: Post published, Successfully Verified");
}
}
我正在从实现 TestNG 的主文件中调用断言方法,如下所示:
@Test (priority=5)
public void assert_message()
{
//Created Page Object using Page Factory
EditPost edit_post = PageFactory.initElements(driver, EditPost.class);
edit_post.assert_message();
}
目前,我正在通过 3 个包运行执行。浏览器工厂的“Helper”包,PageFactories 的“Pages”包和测试用例的“Testcase”包。
我的目标是向前发展,我想重用为所有不同实用程序编写的代码。
我的问题是:
根据 PageFactory 和页面对象模型的概念,我的方法是否正确?还是我需要将断言移动到“帮助”包?或者我应该为断言创建一个单独的库/包? (在接下来的日子里,我可能需要在一个页面上执行多个断言)
在下一个 sprint 中,我可能需要执行一些其他活动,例如截取所有/失败的测试用例的屏幕截图。那么如何保持我的设计井井有条,以便我可以重用代码/库/以最佳方式利用它们?
【问题讨论】:
-
IMO 断言应该放在 @Test 标签内的 testcases 类中,因为它们专门用于识别检查点,以确定您的流程是否按计划进行
-
@Kushalツ 谢谢。但是页面标题、页面图标、标签文本和所有与页面相关的属性不是都在PageFactory中找到了吗?
-
是的,可以做到;但是您必须为每个页面类中的断言编写特定的方法
-
是的,这就是我现在正在做的事情。但我不确定这是否是理想地保存它们的确切位置。但同样,就像验证页面标题、图标和某些其他元素一样,我更愿意重用代码。所以从那时起,我觉得我应该把它们放在 Helper 包或其他包中。
标签: java selenium design-patterns pageobjects