首先,我需要说明下,写这篇笔记的目的不是告诉读者如何去定位,如何使用工具去定位。
目前使用selenium对web自动化测试时完全依赖UI元素的定位,可以说元素位置的变化是牵一发而动全身,我在想有没有一种方法能够快速的获取指定元素的页面中的位置,哪怕他是最慢的xpath,这样,如果页面元素位置变化了,也可以很快的获取到元素位置。
看到这里肯定有人会说,遇到元素位置变换的,在定位一次了,诚然这是目前我们能做的方式,但是假如一个位置变化,引起了其后所有元素位置的变化,难道要把后面元素都重新再获取一遍吗?那这个工作量是非常之大的。目前我这边在做的一个web管理后台就由于框架原因,会出现我上面所说的情况。
一、爬虫(未实践,一种假设)
是否可以使用爬虫去获取给定元素的位置信息,按照id、name、link、classname、xpath的优先级筛选,比如登录模块,正常的定位需要获取以下元素的位置信息
(1).登录按钮,点击跳转登录页面
(2).账号、密码输入框
(3).登录按钮,点击登录
(4).特定文案,检查登录是否成功标识
1.按照html的顺序逐级往下找,应该是可以获取到绝对xpath路径,此时再去判断是否有id、name等字段,如果有替换,如果无则使用xpath给点钱元素赋定位地址;
2.对于动态操作之后才能获取的值,可以通过给页面加载缓存数据,得到已登录状态后的特定元素,然后使用方法1去获取元素定位位置
二、selenium IDE
该插件能够根据用户的操作,获取每个操作元素的地址、操作、输入值,是辅助selenium定位的绝佳工具,如果可以知道其工作原理,或许可以借助该工具的实现方式来获取元素位置
目前能想到的方式就这两种,相对于第二种,第一种是可以尝试,最起码可以提供有限范围的快速获取元素方法,如果真的能实现,对于自动化后期维护成本降低还是有帮助的,所以找时间实践吧,可行的话再来写