Xpath定位经验总结

在使用自动化测试工具RobotFramework编写web界面操作用例时,我们用到最多的就是click element、input text等,这些关键字的参数都是locator,一般使用”xpath=”的形式来表述,先为大家介绍xpath定位的几种方式及使用中常见问题处理的方法。

方式一:绝对路径定位法

最简单的获取方式就是,界面处打开F12,左上角选择箭头图标并选中要操作的对象,右键复制xpath,这种方式获取到的xpath是绝对路径形式,如下格式:xpath=/html/div[1]/input/,”/”表示节点路径。但是不建议用这种方式,因为产品的界面是跟随项目的进展一直在变化的,那么元素的绝对位置也是会跟着变化的,本人就在使用初期跳过这个坑,之前调试好的用例,后来在运行时都定位失败了。

方式二:属性定位法

以我服务云产品的登录界面为例,用户名输入位置是下图中蓝色标记部分,该部分有几个属性值:id、name、ng-model,我们可以通过这三个属性值的某一个或者某几个来定位。例如:xpath = //input[@id=’userName’]或者xpath = //input[@id=’userName’ and @name=’userName’],其中“//”表示所有路径,该例子的意思就是该页面内满足id为userName的所有input。该种定位方式比较常用,若一个属性值无法定位时,可以多个属性定位。

方式三:属性加相对路径法

属性加相对路径法的意思就是,当该元素无法用属性唯一确定时,我们可以先使用属性法确定上级元素的位置在加上该元素相对于上级元素的位置,就是该元素的确定位置。还是例如上图,用户名输入的位置我们还可以表示成:xpath = //div[@class= “login_form_content_1”]/input[1]。

方式四:属性模糊定位法

属性模糊定位法例如,上图用户输入名的位置还可以表示成:xpath = //input[contains(@placeholder,’用户名/手机号’)]。

方式五:各种组合定位法

利用上述所讲的几种方法,联合定位,这样定位位置会更加准确,上图用户名输入的位置还可以表示成:xpath = //div[@class= “login_form_content_1”]/input[@id=’userName’]。

在实际的操作中我们还会遇到这样的问题,无论何种定位方式都试过了,但是用例执行时,依然报错该定位不存在,这种情况建议大家在定位前加上”set browser implicit wait  5seconds”,等待浏览器缓存5秒,等待时间可以自我调整。或者检查下该元素是否在另一个frame里,若是,可以通过”select frame ..”关键字来解决。

以上总结希望可以给大家带来帮助。

发表评论