Page Object模式以及如何实现一些最佳实践

问题描述 投票:0回答:2

在从一个页面对象导航到另一个页面对象时,似乎最好从一个页面对象返回下一个页面对象

我有这样一种情况,在第一页对象之后,一个简单的“ OK”对话框将状态通知用户。单击“确定”后,出现下一个页面对象。因为我经常在应用程序中处理过这样简单的“确定”对话框,所以到目前为止,我还是以一种通用的方式进行了此操作(在“确定”对话框页面对象中找到该对话框,然后按确定)。使用这种方法,我无法返回下一页对象。

为解决这个问题,我看到了这些机会,我想从中获得一些反馈,其中哪些可能是“最佳”机会,以及您还有哪些其他想法。

  • 对于每个“确定”对话框的实现,一个专用的对话框将返回下一个特定的页面对象
  • 创建一个通用的简单对话框,其类型参数是下一个页面对象,并注入逻辑以某种方式查找并返回下一个页面对象(可能?该怎么办?)
  • 不遵循最佳实践,而是使用当前的方法,其中简单的“确定”对话框页面对象不会返回下一页对象,而“测试逻辑”本身会解析并调用下一个页面对象
  • 让第一个页面对象处理简单的“ OK”对话框页面对象的调用,然后从此处返回下一个页面对象;对于一个简单的“ OK”对话框来说,这会很好,但是如果它是一个更复杂的“是/否”对话框,那么我认为这是令人惊讶的编码经验。

感谢您的帮助和反馈。

ps:可能很重要:编程语言是C#

automated-tests ui-automation microsoft-ui-automation
2个回答
1
投票
Selenium指南返回PageObject以“模拟用户通过我们的应用程序的旅程”根据旅程的类型,以下选项起作用:

    选项二:如果
  • “ Simple OK Dialog”是用户旅程的一部分(即,您将在测试中使用此页面对象),则可以使用通用类方法]]
  • SimpleDialogPage声明:

public class SimpleDialogPage<T> { private IWebDriver driver; public SimpleDialogPage(IWebDriver driver){ this.driver = driver; } public T ClickOk(){ return new T(driver); } }

SimpleDialogPage从“首页”的调用]

public SimpleDialogPage<TheNextPage> ClickNext(){ return new SimpleDialogPage<TheNextPage>(driver) }

    选项四:如果
  • “ Simple OK Dialog”不属于用户旅程的一部分(即,您不打算在测试中使用此页面对象),只需将其隐藏在操作后面即可
  • TheNextPage ClickNextAndConfirmAlert(){ SimpleDialogPage alert = _buttonNext.Click(); alert.ClickOk(); return new TheNextPage(driver); }

0
投票
感谢@Anatoly!
© www.soinside.com 2019 - 2024. All rights reserved.