selenium - 我应该在 Selenium 页面对象模型模式中在哪里定义模式特定代码

标签 selenium selenium-webdriver webdriver pageobjects

在 Selenium 页面对象模型模式中,网页被表示为类,页面上的各种元素被定义为类中的变量,用户交互被实现为类中的方法。

即为每个页面创建单独的类。

有一个电子商务应用程序,其中包含登录、主页、搜索、产品、购物车、结帐和订单确认等页面。

还有各种模式,例如购物车预览、添加客户等。 某些模态框将在多个页面上可见,而某些模态框将仅在特定页面上可见。

例如购物车预览模式将显示购物车中当前产品、数量、价格、总数等信息,可以从主页、搜索、产品和购物车页面访问。

而添加客户模式将包含用于添加新客户的字段 - 姓名、联系信息、地址等,并且此模式仅在结帐页面上可见。

如果我使用页面对象模型模式,我应该在哪里定义这些模态,我的意思是我应该为模态创建一个单独的类还是应该在相应的封闭页面中定义它们?

我是否应该为在多个页面上可见的模式创建一个单独的类,并在相应的封闭类中定义页面特定的模式?

最佳答案

根据 Page Object Design Pattern 后的测试设计考虑 :

  • 页面对象是一个面向对象的类,充当被测应用程序页面的接口(interface)。每当您的 @Tests 需要与该页面的用户界面交互时,就会使用此页面对象类的方法。这样做的好处是,如果页面的 UI 发生变化,您的 @Tests 本身不需要更改。只需要更改页面对象中的代码。

    优点:

    • 测试代码与页面特定代码(例如定位器、方法和布局)之间清晰分离。
    • 页面提供的操作的单一存储库,而不是将这些服务分散在整个测试中。

基于这些功能和优势 Modal Box您在UAT中观察到的结果是 Bootstrap Modal Plugin本质上是同一页面的 HTML DOM 的一部分。因此,还应该为每个页面对象单独定义这些定位器和关联的方法,以便与关联的WebElement这些Modal Box页面对象初始化时,也会被初始化。

关于selenium - 我应该在 Selenium 页面对象模型模式中在哪里定义模式特定代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49001569/

相关文章:

javascript - 如何使用 Selenium IDE 获取输入的值

ruby-on-rails - 使用 Selenium 和 Headless Chrome 进行 Rails 系统测试的 Gitlab CI 配置

python - 如何找到包含特定类值的元素?

c# - Selenium 在 WaitForElement 之后抛出 "Element No Longer Valid"

java - Selenium Webdriver 和 Java。元素在点 (x, y) 处不可单击。其他元素将收到点击

java - 动态检索 JUnit 类

java - 如何捕获URL中的特定文本?

java - 在 Selenium 中使用 OR 运算符显式等待两个元素

ruby-on-rails - cucumber 和瓦蒂尔突然停止工作

python - 使用 Python Selenium 从下拉菜单中获取当前 <select> 值