最近做了一个易订货库存管理系统自动化脚本,还真是应证了那句:“敲码一小时,bug调一天”
遇到的问题:
定位网站中的某个元素时,定位的元素属性会随页面的的刷新动态加载重新生成,搞得一直定位不到该元素。(这网站反爬做还是很强的)
变化的id,class,xpath
-
这个网站的元素id基本都是由字母和数字组成,每次加载数字都会重新生成。
-
class属性也是会变化的,在你复制的xpath路径的时候,class属性就会变动,但不影响页面。(class属性一般会给多个值,总有一两个没有用的,增删都不会影响原有)
解决办法:不使用会变动的id和class定位,尽量用手写的xpath去定位(避开会变化的属性,找不到就一直往上推,找上一级…) -
复制xpath时同一个div标签位置发生改动,
如:
/html/body/div[6]/div[1]/div[1]/ul/li
/html/body/div[7]/div[1]/div[1]/ul/li
/html/body/div[8]/div[1]/div[1]/ul/li
解决办法:上面的xpath中某个div位置是变动的,但始终位于最后一个节点上,只需将变动的数字换成last()函数即可(注:该点借鉴于https://blog.csdn.net/sun_977759/article/details/100989829)
/html/body/div[last()]/div[1]/div[1]/ul/li