Spring+TestNG+Selenium PageFactory实践经验-自动化测试
更新时间:2023-01-09 09:06:54 作者:多测师 浏览:126
近期项目空闲,对Selenium的PageFactory模式做了一些尝试,总体框架与现在组里维护的Selenium项目大体一致,一些新的技术和方法做了一些总结。
PageFactory是PageObject设计的一种扩展,PageObject的主要思想是简化项目结构,减少重复代码,把页面元素和用例分离,便于维护,我看到的大部分Selenium项目就是这样的一个结构:Page、Task、TestCase,3层分离,Page类主要获取页面元素,通常继承一个基类,通过封装好的WebElement获取方法来定位;Task类主要对Page类中获取的元素进行基本操作。
Selenium的PageFactory对PO做了一层抽象,它通过@FindBy,@FindAll,@CacheLookup等特有的注解直接对WebElement对象进行了初始化和实例化(和Spring的注入类似),可以直接在页面类里通过注解定义WebElement,如同定义一个变量一样,如果定位后的WebElement有多个则可以定义为一个List。
页面类构造函数里通过执行PageFactory.initElements方法对所有WebElement进行初始化,当这个element对象被使用时将重新查找并实例化。由于页面元素在这里直接是一个变量,因此元素和对元素的基本操作(服务)可以放在一个类里,元素操作尽量保证独立,即操作后元素恢复初始值,不会对下一操作产生影响。如果页面有改变可以只在这一个类中进行修改,进一步整合了元素和操作。
项目这里使用Spring+TestNG来集成和驱动测试,Spring的一个好处是项目结构清晰,实例自动注入,这样可以将公共操作,提供服务的类放在Page或TestCase的基类中自动注入实例化,省去了大量的new,另外Spring有丰富的组件支持,对数据库等操作可以直接使用,Spring jdbctemplate,维护好数据库的配置信息即可,省去了一定量的代码。
以上内容为大家介绍了自动化测试中的Spring+TestNG+Selenium PageFactory实践经验,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/