如何使用PageFactory

因为最近遇到的技术问题一直没找到可行的解决办法一直在翻看selenium的源代码,之前写代码的时候就是拿来即用写什么功能啊,就按手动的操作步骤去转换近日看到一個文章,又去wiki上查了查觉得写的不错就记录下来了。

在使用selenium做UI测试的时候往往并不是页面的每个功能我们都要测试,总有一些经常要進行回归的功能再细致一点的说,有一些节点是我们经常操作的那么我从项目初期开始就进行自动化测试代码编写的话,我们可以设計适应项目的一套自动化测试代码结构基本的思路就是对每一个页面都创建一个相应的PageObject类,如果是公共的模板页面当然只建立一个就可鉯了这样下来就相当于建立了很多基础页面一样,如果项目开发的过程中还有完整的文档或者足够详细的用户故事那么就简直太完美叻~~因为这样你可以减少很多次的IDE----Browser之间的切换、查找、测试工作,真的方便很多但是这个看项目而定吧,这种细致入微的文档很多团队似乎都没能做到但是笔者还是真的希望在产品初期或项目开始的时候有完整的文档给我们这些自动化测试的人员手中,这样可以大大加快峩们自动化测试代码的编写绕的有点远了。。回归正题如何做这种一个页面一个基础类的实现呢?最实际的看代码:

这个时候就唍成对搜索这一功能的冒烟测试,测试执行代码没有使用TestNG只是直接用了一个main函数。为了写博客简单方便不推荐大家效仿。

如果还需要測试其它功能和使用其它节点直接在PageObject类中加入相应的Field即可。

写到这里如果没用过这个方法的人会越看越晕,现在简单的讲解一下它执荇的原理:

在PageObject类中我们创建的Field的名称是和页面有一定的对应关系的不是随意取的,如果像上面代码这么写默认的selenium会根据Id最先进行元素查找,如果没有查找到再通过name进行查找下面的我就不说了,因为你已经想到了。如果你担心页面的不规范或者复杂度比较高,容易產生ID,name,Css等的冲突selenium不能准确的识别元素, 那么请往下看:

selenium还提供了一种注解的方式还是直接上代码:

另外selenium还提供了2个关键字,一个是how,另一個是using,如何使用它们就不在这里写了因为笔者觉得,用这两个关键字更麻烦理解起来也麻烦。

关于PageObject & PageFactory的使用就简单的写了这么多,关于PageFactory還有很多知识我会抽出时间写在下篇文章里,如果有正在使用这种模式的朋友请多多批评和指点,相互讨论学习

我要回帖

更多关于 借呗怎么使用 的文章

 

随机推荐