有人可以告诉我如何编写将Selenium Page Object Pattern和ExtentsReports(http://extentreports.relevantcodes.com/)结合起来以从这些测试用例生成报告的功能应用程序测试。如何设计测试班?因为我知道验证应该与页面对象分开。最好的方法是什么?

一段示例代码将非常有帮助

最佳答案

当然,从测试中分离模型(页面对象)是一种好方法。为此,您可以使用一层服务,即帮助程序类,它可以与业务对象和页面对象进行交互。

注意:我将回答您问题的第二部分,而不是另一个报告库。

因此,您有一个业务对象:

public class Something {
    boolean toHappen;

    public Something(boolean toHappen) {
         this.toHappen = toHappen;
    }

    public boolean isToHappen() {
        return toHappen;
    }
}


您也有自己的页面:

public class ApplicationPage {

      // how driver object is put here is your own business.
      private static WebDriver driver;

      @FindBy(id = "id")
      private Button triggerButton;

      public ApplicationPage() {
           PageFactory.initElements(driver, this);
      }

      public static ApplicationPage open(){
           driver.get("http://page.net");
           return new ApplicationPage();
      }

      public void trigger() {
           triggerButton.click();
      }
}


因此,为了避免在测试中混合业务对象和页面,您可以创建一个服务:

public class InevitableService {

     public static void makeHappen() {

          // just a very stupid code here to show interaction
          Something smth = new Something(true);

          ApplicationPage page = ApplicationPage.open();

          if(smth.toHappen()){
               page.trigger();
          }
     }
}


最后是你的测试

public class TestClass extends Assert {
    @Test
    public void test() {
        InevitableService.makeHappen();
        assertTrue(true);
    }
}


结果是:


您没有测试驱动程序
您在测试中没有页面对象
您只操作高级逻辑


优点:


非常灵活


缺点:


随着时间的推移变得复杂


考虑您的报告工具-我相信它只是监听您的测试结果并将其发送到服务器。或只接受您测试的xml / html结果并制作漂亮而无用的饼图。同样,与POP无关。

关于java - Selenium Webdriver页面对象模式和ExtentReports,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31539242/

10-11 22:35
查看更多