我当前正在使用Cucumber(info.cukes)-Selenium进行自动化测试。
现在,我有一种情况,在流程的任何点都可能发生特定步骤。 因此,我必须设计一个黄瓜方案来验证每一步中的动态页面。
如何在没有AfterStep钩子的情况下实现此目的? (黄瓜(info.cukes)不支持AfterStep挂钩)
示例:
场景:选择订单。
Given: Open URL with chrome browser
When: Login with correct ID and password
Then: Complect the details on step 1
And: Complect the details on step 2
And: Complect the details on step 3
我的应用程序有一个动态页面,该页面可以出现在任何页面之间,因此我需要检查每个步骤中是否显示该页面,并在显示动态页面时执行特定任务,然后转到下一步在场景中。
请问有人可以帮助我实现黄瓜硒自动化的解决方案。
感谢您的帮助。
答案 0 :(得分:0)
在保持端到端测试代码DRY时,页面对象几乎总是答案(或者至少是一个很好的起点)。即使您具有AfterStep挂钩,我也要警告不要在其中添加过多的隐式内容,但是按照流程进行和调试可能确实让人头疼,尤其是对于其他人。
在您的情况下,我可以想象一个工作流中三个页面的页面对象,每个对象都有一个clickSubmit()
方法,该方法检查神秘页面的URL并完成(如果存在)。像
public void clickSubmit() {
click(By.className("submitButton"));
if (driver.getCurrentUrl().contains("mysterypage")) {
MysteryPage mysteryPage = new MysteryPage(driver);
mysteryPage.completeForm();
mysteryPage.clickSumbit();
}
}
诚然,对于称为clickSubmit
的方法执行所有操作来说有点奇怪,所以也许最好在测试中存在一个辅助方法,并在每个方法的结尾都调用它步骤。
事后考虑,如果您对中间页的显示时间和位置具有真实的业务规则,并且不仅是随机的,那么它可能值得一试。如果用户真的很想看到它出现在这里而不是那里,但是您使小黄瓜看不到它的外观,所以它始终“起作用”,那么您就可以掩盖一个bug。