Web UI自动化对环境依赖度高,换言之,同一套代码,换个机器跑,很可能问题百出。浏览器的配置自然是重中之重,除此之外,机器的屏幕分辨率也是不可忽视的重要因素。
曾经碰到一个问题:我写的一段代码,在我自己的虚拟机里跑的挺好的,但是在另外一个同事的虚拟机里,某个菜单就是选不中!debug时发现,元素都定位到了,MouseClick就是不点击该元素(插一句,如何快速发现是元素定位问题还是元素操作问题呢?看报错信息,如果在操作元素那一行抛出的错误信息是:not found 或者 null referrence之类的,100%是元素没找到,如果没有报错,但是没有也没有去操作元素,那么元素肯定是找到了,要么找的不对,操作不了,要么是其他原因导致无法操作)!
查来查去,发现是屏幕分辨率的问题,我的分辨率很高,可见区域大,该元素全部都可见,可以选中。但是同事的机器分辨率没有这么高,可见区域没有这么大,导致该元素部分在区域外,影响了鼠标选中(代码模拟鼠标去选中时,并非像人一样全部点中间,有些框架设定了默认值,比如去点击距离元素边框x像素点的位置)。
曾经的曾经,还碰到一个问题:我们为production support写了一些smoke test,他们每周在生产环境运维重启之后跑这些smoke test来确保生产环境主要功能可用。有一天,他们找我,说是有个test case总是失败。报表期待行数>20,但是实际上==20。我看了一会儿,原来是执行smoke test的机器分辨率设的不高,导致页面图标什么的都很大,但是可见区域很小。我们系统的机制是:根据可见区域大小来设定将这X行放入一个大DIV,X+1 ~ 2X行放入到平级的下一个DIV里。而代码考虑的不全面(也同样可能因为代码开发者的机器分辨率高,他并不知道系统的这一特质),取第一个DIV里的行数。所以代码在分辨率高的机器上执行,整个报表的行都显示在第一个DIV,判定条件设置为>20肯定通过。但是如果在小分辨率的机器上,第一个DIV只有20行,test case就会失败。
《杭城终入冬》
冬临一夜间,风吹两腿寒。
行人颈哆嗦,忙把秋裤添。