使用selenium做网页UI自动化的时候,会遇到网页元素ID是动态加载生成的情况,这个时候使用传统的xpath精确定位,会找不到元素,这个时候可以考虑模糊匹配定位,匹配元素定位中不变且唯一的地方
可以使用的方法有
starts-with(以什么开始)
ends-with(以什么结束)
contains 包含
以contains 为例子:
比如我们在定位中使用的xpath定位一个使用下拉框中的某一项值,我们得到的xpath为
.//*[@id='cascader-menu-3932']/li[1]
目标下拉框元素中的3932是一个后台动态加载给前台的值,每次刷新网页都会变化,这个时候使用传统的xpath定位,一定是找不到该元素的,可以将上述标黄的部分改写成模糊匹配
[@id='cascader-menu-3932']
[contains(@id,"cascader-menu")]
其他的部分不改变,直接搬回来,然后就可以正常定位了
.//* + [contains(@id,"cascader-menu")] + /li[1] = .//*[contains(@id,"cascader-menu")]/li[1]