第一种情况,根元素是根据ID去定位的
如://*[@id="cascader-menu-3732-1"]/div[1]/ul
像这种元素的ID中间那一串3732是变化的,每一次看到都是不一样的,故而不能作为定位元素的依据
解决办法是可以把copy xpath换成copy full xpath,另外根元素ID属性也可以换成其他固定唯一的属性去定位
第二种情况,xpath里面某个标签的数字是动态的
如:下图所示想定位下拉框里面那个元素,通过xpath定位出来为/html/body/div[4]/div[1]/div[1]/ul/li
放到脚本里面去执行的时候发现找不到该元素,经过多番比对才发现这个下拉框里面的xpath是会变动的
比如点击了上面那个数据库类型下拉框,下面那个xpath就变为了/html/body/div[5]/div[1]/div[1]/ul/li
对比:
/html/body/div[4]/div[1]/div[1]/ul/li
/html/body/div[5]/div[1]/div[1]/ul/li
通过自己不断对比这变化的xpath再配合这页面,发现虽然第三个节点div里面的数字是变化的,但是始终符合一个规律,就是第三个节点div始终是body下的最后一个div
xpath里面可以引入一个last()函数,写法变为:/html/body/div[last()]/div[1]/div[1]/ul/li
对于绝对路径的xpath都是动态的,那么就需要去寻找一定的规律,比如像上述这样,如果满足一定的规律,则可引入一些特定的函数去解决
如果什么规律都不满足,那么考虑用相对路径,去寻找特殊的属性去定位到根元素,然后一层一层往下找