java - 在页面对象模型中,覆盖模式窗口应该被视为单独的页面类还是在 "Parent"页面类内?

标签 java selenium overlay

当我在 Selenium 上进行 self 训练时,我使用页面对象模型作为我的设计。我的练习网站是https://www.beeradvocate.com (我喜欢啤酒,它给我带来了一些我一直在寻找的测试挑战)。

一旦此类实例是页面覆盖或模式窗口。

我知道在 POM 中,每个页面都有自己的类,其中页面对象位于其中,并且对它们采取相应的方法/操作。此外,如果我单击导航到另一个页面的链接,则会在函数中返回一个新的页面对象,例如:

返回新主页();

当单击“登录”链接时,它会生成一个覆盖模式窗口。框架似乎没有被视为它们自己的页面类。它需要一个 switchToFrame() 操作。这同样适用于这个覆盖层吗?也许只是一个 getWindowHandles() 操作来导航到它?

最佳答案

我建议创建一个单独的类来代表您的模式,特别是当它被其他页面共享或有一天可能会从该页面移出时。

但是,如果模式非常简单并且仅包含在一个页面上并且确实特定于该页面,那么它可以由该 POM 中的一组函数表示。然而,您需要以某种方式将这些方法识别为“区域”或子组,例如为方法命名空间或使用装饰器,我总是认为在 OO 术语中,这听起来像是这里有一个需要划分的子对象出来!

在 Java 中,划分和组合的成本非常低,因此没有太多损失。但是,拥有大量“子组件”的大页面对象可能会变得困惑。这可能取决于网站本身的子结构如何,这将指导您的决定。就像如果模式的选择器相对干净并且与主机页面本身分离一样,它就不会被页面“拥有”。

这个类似的答案指出,“POM”更多的是一个模块表示,而不是整个“页面”(无论现在这意味着什么!)。 https://stackoverflow.com/a/47141290/209288

这个答案也提出了同样的问题。 https://stackoverflow.com/a/49002231/209288

我来寻找类似的答案,并在阅读这些讨论时决定分解我的模态。 (所以我的回答是基于 15 分钟的思考,而不是经验!)

关于java - 在页面对象模型中,覆盖模式窗口应该被视为单独的页面类还是在 "Parent"页面类内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62077683/

相关文章:

java - Python 到 C 算法

javascript - jQuery 事件直到第二次点击才触发?

java - 打印整个java项目的源代码

java - 如何更快地调用下拉选择

c# - 使用 Selenium 选择元标记

java - 为Selenium编写正确的Xpath:引起标签前的问题

objective-c - MKCircle 叠加层未绘制在 MapView 上

javascript - 如何仅在单击时而不是之前加载图片

java - 使用备用路径修复 CWE-288 身份验证绕过

java - 如何在java中创建子类的对象?