有一个table表格,每页有十行记录显示。每次对其页面进行操作以后,使用selenium对其下一次循环进行操作的时候抛出了异常:
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element
意思就是说:陈旧元素引用异常
原因是,因为表格中对其进行的点击操作,导致页面有重新加载。
我是在循环前去遍历了这十条记录获取到了这些元素,循环里是通过下标的方式去对其进行操作。而这个时候我有修改后,页面有重新加载,下一次循环再去进行元素操作时就会导致找不到该元素了
解决办法:重新获取该元素
因为我知道在什么条件下会去对记录进行操作,所以在每次对其进行操作以后,都去重新获取一下该元素。如果没有进行修改操作,就不去重新获取。(当然也可以每次循环操作的时候,不管页面有没有重新加载,都去重新获取也是可以的)
然后网上基本上的解决办法是利用try except来解决,自己也可以根据实际情况来进行验证解决:
from selenium.common import exceptions as ex
try:
xxxxxxxxxx
except ex.StaleElementReferenceException:
xxxxxxxxx