关于Selenium的自动化测试,函数的使用,网上有太多的基础教程了,我这里就不在一一列举了,大家可以自行参考其他教程或者官方网站。 这里主要探讨一下web自动化测试的方案设计,和博主认为的难点。
系统架构
如下图,在我们后台自动化测试框架的基础上(此图web扩展的部分架构,其他部分涉及到公司保密,没展现在图里面),扩展了selenium,在selenium的基础上扩展了页面对象的设别,引入重试加倍延迟等待时间机制来提高设别成功率。 page action模块里面统一实现了页面动作,一个函数实现了一个动作,保证每个页面动作的独立性,所以如果后面的版本中需要增加不同的执行步骤组合,只需要调用里面的函数即可。
数据获取模块,分了三层,分别是数据库数据获取模块,页面数据获取模块, web application log的的数据获取模块。通过这种方式可以很容易组织好团队里的各个成员,每个人实现自己最擅长的模块,快速集成。
web自动化测试的很大一个需求来源是浏览器的兼容性测试,所以在框架设计上必须考虑如果一次性测试多个浏览器。 博主的方案是对测试用例集放到每个浏览器实例里面,一个浏览一个浏览器的顺序执行。
页面element 的定义与解析
页面元素的定位,一直以来是web自动化测试的一个难点,因为很多公司的web开发者实现的代码并不规范。 尽管如此,大家在实现自动化测试的时候,尽量还是避免使用css, xpath去定义,可读性,维护性太差。尽量使用id, name, class name去定义。对应一些没有id, name, class name的element,尽量试试用find_elements_by_tag_name 然后解析其属性来定位element,或者使用find_element_by_xpath(“..”), find_element_by_xpath(“../..”) 来查找上级或者上上级element。
利用beatuifulsoap 来解析
Beatuifulsoap因为强大的解析功能,被用着很多爬虫说解决方案里面,如果爬虫的功能都能满足,自动化测试的需求当然可以全部满足。博主结合find_element_by_xx(table_id).get_attribute(‘innerHTML’) 和beatuifusoup 在目前所做的项目里面几乎没有遇到不可以解析和定位elements. 比如一定动态的id 或者 name者,先通过beatuifulsoap的模糊匹配,然后通过解析其他属性来定位id或者name的,再调用find_element_by_xx 就可以实现完美的定位方案。 妈妈再也不担心开发人员不写id,或者name值