这一天把忘得差不多的自动化知识重新捋了一遍。又对比了下现在主流的测试工具,最后还是定格在Selenium。在工具选择上,还是要关注与用户使用度和文档。
为啥不用QTP?无他,没钱= =#
然后着重突击了一下Selenium的知识,用IDE录制了两个脚本,发现几个问题:
1,被测网页中有一个自定义控件用于控制范围的,如图。点击控件内某一部分,控件的上下两个箭头根据离点击点的远近判断来移动其中一个,刷新页面。
我录制的时候发现Selenium IDE竟然对此事件毫无反应。分析了一下,此控件是上下两个div组成的,通过鼠标事件调用js。但是我没找到js的代码,不清楚具体的运行机理。也就自然想到了简单的clickAt方法,直接在控件某一坐标点击。运行一下,又是毫无反应= =# 原来是js只相应mouse down事件。于是改为mouseDownAt方法,OK。
在实际测试中,控件大小基本不会变动了,即每个范围对应的坐标也是一定的。对于这种可以穷尽的测试,使用坐标是可以的。
2, 网页内部含有一个ajax表格。表格数据根据筛选范围所变,但是表格的所有基本元素都完全固定,刷新的时间又不很一定,少则1秒多则几十秒。录制的时候为了等待该ajax刷新完成好操作其中的内容,clickAndWait和waitFor的大多数方法都不得用。发现刷新过程中会有显示一个gif提示,刷新中该gif的display为block,完成后设为了none。于是想通过waitForAttribute方法来判断是否刷新完成。结果运行时常常判断错误导致超时失败。郁闷了半天。
后来无意间把源代码从html转为python,发现waitFor的方法都是循环判断is_*的方法。于是直接用python通过几个元素来判断刷新完成,OK。
整个一天也没干什么。后来看了看XPATH和python client selenium的源码,基本知道了怎么回事。工具这边的准备也基本到此为止。网站的测试用例还没有看,要得马上补一下。昨天听一个同事的转正演讲,了解到此项目的客户自己提交了很多个bug,突然想起来应该对比一下QA和Client的bug report。
今天完。