Selenium Web Driver自动化测试(java版)系列下半部分(32) - 用数据驱动搭建测试框架雏形(5) - 分离Page Objects,修改测试结果返回值

上篇我们给框架设计了一个配置文件,而且利用java反射机制优化了控制类,框架又进步了一些。这次我们可以再改几个小地方。首先看LoginPage.java和EmpPage.java这两个文件,它们都有getPageObjects()方法,里面有每个page object的获取过程:

我们可以把这一步单独拿出来,让它根据object名称来自动判断需要用哪一个定位器,这样就不用总想着到底需要是id还是name还是xpath了。先根据object的定位器修改一下object名称,加上后缀"_定位器":

loginPage.properties:

empPage.properties:

接着就该写判断步骤了,在com.testalliance.hrsystem.pageobj中新建Objects.java,复制如下代码:

这段代码不难理解,接受两个参数,一个是object名称,另一个是object值,每个传进来的object信息都会进行自动判断。

接着修改LoginPage.java和EmpPage.java:

LoginPage.java:

其实就是把定位过程放进每一个小的操作方法中,我还把getObjects()加了个参数,这样文件路径就可以传进来了。同理,EmpPage.java可以改成:

这样,page object的获取过程就被单独提取出来了,我们不需要总想着到底应该用哪种定位器了。

第二个我想修改的是测试结果返回值。目前所有的测试类都是里面都用Result = "TEST PASS"作为测试结果,比如TCLogin1.java:

image

不说专业不专业,每次写文字"TEST PASS"也容易出错不是?我们可以在测试类里把它们用整型0或1代替,统一返回用字符串表示。当然,你也还可以继续用布尔类型true和false,不过整型也是很多人常用的,我演示一下,以TCLogin1.java为例:

表示测试结果的result变量初始值为0,如果最后执行完毕是Pass则改成1。按照这个改变把另外几个测试类也改一下,把结果返回给TestRunner.java处理:

执行一下,测试通过。这篇的修改就到这儿。注意,现在TestRunner.java里面还有bug,举个例子,程序进入try语句后如果在执行测试方法时抛出了异常,dm.cleanUp()还能执行到吗?就执行不到了。或许执行结果都无法被打印出来,所以我们还要继续修改。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容