在页面对象模型框架中存储数据的最佳方法是什么

时间:2019-01-30 08:03:35

标签: java selenium selenium-webdriver datastore pageobjects

我使用Page Object Design Pattern在硒中构建自动化框架。 以下是我正在使用的一些数据以及我将其存储在何处

  1. PageObjects(xpath,id等)-在页面类本身中 enter image description here
  2. 配置数据(等待时间,浏览器类型,URL等)-在属性文件中。 enter image description here
  3. 其他数据-在类中为静态变量。
    enter image description here

一旦框架开始增长,将很难存储所有数据,也将难以组织数据。我对其他人如何实现他们在框架中存储数据的方式进行了一些研究。这是我发现的,

  1. 在类本身中存储数据(主要是页面对象)
  2. 以JSON存储数据 enter image description here
  3. 甚至有人建议将数据存储在数据库中,以减少读取时间

由于那里有很多选择,我想就什么是最好的数据存储方式以及其他人如何存储数据的方式获得一些反馈。

3 个答案:

答案 0 :(得分:0)

JSON或任何临时数据存储是一个最佳选择,因为它是一个框架,其目的是为不同项目重用。

答案 1 :(得分:-1)

我建议对每种设备类型使用接口来存储多个类型选择器,例如:

import static org.openqa.selenium.By.cssSelector;
import static org.openqa.selenium.By.linkText;
import static org.openqa.selenium.By.xpath;

public interface DesktopMainPageSelector {
    By FIRST_ELEMENT = cssSelector("selector_here");
    By SECOND_ELEMENT = xpath("selector_here");
    By THIRD_ELEMENT = id("selector_here");
}

然后,只需根据需要使用这些选择器即可。

对于更复杂的结构,您也可以使用enums。

我发现这是最好的解决方案,因为它易于管理大量选择器

答案 2 :(得分:-1)

我认为您存储数据的方式没有任何问题。

  1. 定位符(通过POM定义)应存储在页面对象本身中。
  2. 配置数据可以存储在某种配置文件中……无论您觉得方便如何。您可以使用纯文本,JSON,XML等。我们使用XML,但这确实取决于个人喜好。
  3. 我认为这也很好。

该框架实际上并没有增长,自动化套件却在增长。只要您将数据存储在上面3个位置上,就可以了,我认为应该没问题。我使用这种方法遇到的唯一问题是,有时某些页面上具有很多功能,因此页面对象会变得很大。在这些情况下,我们找到了一种将页面分成较小块的方法,例如一页上有22个标签,每个标签包含一个不同的面板。在这种情况下,我们将页面对象分成22个不同的类文件,以使大小更易于管理,然后将它们全部作为属性挂接到主页面,例如mainPage.Panel1.someMethodOnPanel1();