在Selenium中使用页面对象与配置文件

时间:2016-10-04 14:47:36

标签: ruby selenium selenium-webdriver automated-tests pageobjects

我一直在使用Ruby Selenium-Webdriver处理我正在开发的自动化脚本之一,并且我被要求使用Page Objects,但是我们使用了很多页面对象,但是对于这个应用程序我我正在使用CSV文件,我已经在CSV文件中定义了我在我的应用程序中使用的所有xpath,并且我在我的脚本中解析该CSV文件以引用这些对象,我想知道除了性能问题之外,使用类来定义页面对象或使用CSV文件有什么不同?我相信从配置的角度来看,使用CSV文件对我们来说是一个插件,并且会使维护更容易,对此有何建议?

编辑 - 在我们的使用案例中,我们实际上自动化了基于云的工具构建的应用程序,因此基本上所有应用程序都从HTML角度共享相同的设计结构,因此我们用CSV定义xpath模式然后我们传递某些参数为了我们已经知道所有应用程序将共享所有元素的类似xpath模式,我们已经开发了一些自定义方法,这些方法是使用CSV自动生成xpath而不是手动查找它们的开销。 / p>

由于

3 个答案:

答案 0 :(得分:3)

我认为,POM优于CSV方法。在POM中,您将页面的元素放在单独的类文件中。因此,如果要进行任何更改,则更容易找到更改/维护的位置。而且,它不会像CSV文件那样过于混乱,你也不需要使用额外的效用函数来解析它们。

答案 1 :(得分:2)

还有一个pageobjects gem,它在webdriver / watir之上提供了一组库,简化了代码。

另外,为什么是xpaths?它是最后一种识别元素的推荐方法之一。

至于frameork方面,csv应该比PageObjects更多的维护问题。它是文本和代码之间的基本区别。您在PageObjects中对元素强制执行面向对象的方法,但这对于csv是不可能的。

在最佳情况下,您已创建了一个列/单独的工作表,用于定义元素xpath所属的页面。这听起来像是开销。随着应用程序/套件的增长,可能会有数千个元素。想象一下,用这种数据解析/手动更新csv。

而在PageObjects中,您的元素将仅限于Page。对应用程序的任何更改还将指定可能受影响的元素。现在,当您将元素定义为PageObject中的对象而不是css时,您也不需要通过读取csv来显式创建元素。

答案 2 :(得分:0)

这完全取决于您可能执行的应用程序和测试类型。

由于它是一个自动化的测试脚本,你不必真正担心脚本的性能(可能需要几毫秒的时间来解析,这应该没问题。)

维护所有元素识别属性& CSV文件中的相应操作将使维护更容易,并使框架应用程序独立,这是很好的。但是维护你的框架有点难以使它更强大。这两种方法各有利弊。

请参阅下面的帖子[示例在java中 - 但您会明白]:

  1. Keyword driven framework
  2. Advanced Page Objects
  3. 更新

    如果你喜欢两者,你可以提出你的实现,以便轻松集成这些。

    (1 row affected)
    (0 rows affected)
    

    即,定义配置文件中的所有元素,如csv / json等。让页面对象引用页面元素的类。所有方法都将成为页面类的一部分。