目的:自动化中通常需要根据元素是否存在,来决定下一步的动作;比如 A存在就点击 下一步,B存在就点击保存;用于控制脚本的逻辑;
selenium中判断元素有几种方式
1、find_element(locateType, locate)
2、WebDriverWait(self.driver, 20, 0.5).until(EC.presence_of_element_located((locateType, locate)))
那么推荐使用2;如下:
# 判断元素是否存在 def elementTrue(drObject,locateType,locate): # 等待元素加载出来 el = 1 try: WebDriverWait(drObject, 5, 0.5).until(EC.presence_of_element_located((locateType, locate))) # 返回元素 except: pass el = 0 return el if el == 1: return el
为什么不用方式1,因为页面加载快慢问题,方式1只会判断一次,恰巧元素正在加载中,那么返回就失败即元素不存在了;
方式2是driver内置的方法,显示等待,超时时间20s内,不断重试,只要元素在20s内加载出来了,就返回存在;这比方式1要稳定很多;