Webdriver的设计模式
接触过webdriver的人都会有一种感觉就是到底怎么设计测试的框架。其实官网已经帮我们定制过一种设计模式,就是pageobject模式。这种模式的思想就是把一个测试的页面看做一个类,或者一个页面中的一个模块也看做一个类。这样,只需要在这个类里面提供一些服务性的方法就可以了。举个例子,在我们登陆邮箱的时候,可以把163邮箱当做一个page类,我们可以称为mailPage类,然后在这个类里面会有几个方法,可以是输入用户名,输入密码,还有实现登陆。也可以定义个单纯的方法叫做login。也可以把用例直接实现就是在没有输入用户名的时候登陆,可以叫做NoInputNameLogin的方法。其实具体的方法的实现还是要根据具体的程序的维护性来决定如何来设计,普通的正确的服务方法,我建议封装起来,用例的话可以在设计用例流程的时候来调用这些方法。我们可以把传入的值定义的宽泛,在调用的时候传入的参数可以灵活,这样不会造成流程变化或者用例变化,造成代码维护困难。
其实具体的框架的设计还是要根据自己对整体程序的理解来设计。来举个pageobject的小例子来展示一下pageFactory的使用。
在我们做测试的时候,一般情况下都是按照流程去写测试脚本,如果把所有涉及的页面都统统的放在一个实现方法action里面,对于维护和理解起来很难的。所以,我们用应用pageObject模式来设计程序,但是要把这些page类集合起来的话,需要new出来很多的page对象,但是这些对象必须保证都隶属于一个driver,所以可能做起来让人看到针对driver和page的操作很多了,让人难以理解到底是针对brower的对象driver来操作呢,还是针对page来操作呢,我们其实可以把driver封装起来调用的。pageObject模式在官方上提供了一种pageFactory的实现方法,可以加载page类到自己的用例实现类里面,很方便。假设我们定义的page类为XXXPage,实现的方法就是:
XXXPage xp = PageFactory.initElement(driver,XXXPage.class)
driver就是我们实例化的webdriver的对象。这样通过这种加载机制我们就可以把许许多多的page类放在一个的类里面来操作了。