Automation 实现页面对象模型

Automation 实现页面对象模型,automation,selenium-webdriver,Automation,Selenium Webdriver,我正在使用Perl和Selenium构建一个测试自动化项目。我使用的是页面对象模型。我有点不确定Selenium驱动程序在页面对象模型实现中的位置 每个页面对象是否应该“有”一个驱动程序?我的想法是,每个页面对象代表页面向用户提供的一组服务。考虑到这个概念,页面对象与驱动程序没有“has-a”关系。页面对象与驱动程序交互。不过,我仍在寻求建议。我应该将驱动程序作为web应用程序中每个页面对象的一部分吗 谢谢 我总是将驱动程序作为每个页面对象的一部分。我对驱动程序的看法是,它代表当前页面的状态。它

我正在使用Perl和Selenium构建一个测试自动化项目。我使用的是页面对象模型。我有点不确定Selenium驱动程序在页面对象模型实现中的位置

每个页面对象是否应该“有”一个驱动程序?我的想法是,每个页面对象代表页面向用户提供的一组服务。考虑到这个概念,页面对象与驱动程序没有“has-a”关系。页面对象与驱动程序交互。不过,我仍在寻求建议。我应该将驱动程序作为web应用程序中每个页面对象的一部分吗


谢谢

我总是将驱动程序作为每个页面对象的一部分。我对驱动程序的看法是,它代表当前页面的状态。它提供对URL、页面源等的访问


现在,每个页面都有一个当前URL、一个页面源代码和一个页面标题,这些都可以通过驱动程序访问。

这个答案与@zodvik和您的思维过程没有太大区别,但是另一种可选方法。您可以创建一个抽象类,然后每个页面对象都可以从中继承,而不是传递驱动程序。从抽象类中,还可以包含一些您经常使用的常用函数方法


至少我用Java语言是这样做的。

顺便说一句,我实现了这个框架。我在commonFactory.class中使用了驱动程序,该类包含常用元素。每个页面都作为commonFactory.class的子类实现。因此,您不必在每个类中都实现驱动程序。因为驱动程序独立于测试场景,所以最好以单独的方式使用它

谢谢你的意见,nrbafna。这就是我最终选择的方法!你说得对!我意识到与页面进行交互的唯一方法是通过驱动程序,我正在传递驱动程序,这样就不会为每个页面创建新的驱动程序。