最近学习selenium自动化, 由于代码执行速度过快,导致元素还没被加载出来,代码就去定位,导致报错,由于我一直使用的
是time.sleep强制等待,虽然不好用,但胜在简单嘛, 但是有时设置的睡眠时间过长,大家懂的,干等是很浪费效率的,所以
打算学习一些显式等待,但是在网上看了很多博主的文章,关于显示等待的until(method)到底传入什么参数,我至今不解。
所以记录下来,以供有需要的人观看。
首先先说明一下 具体使用的参数 :
WebDriverWait(driver,timeout=程序等待时间,poll_frequency=每隔几秒执行until中的方法).until(method='具体来做什么事情')
第一个driver是固定的参数,就是 webdriver.Chrome()的实例化对象,其他参数我在上面都有写,在这里就不描述了。
下面我们来说until中具体需要放什么东西,一开始我的设想是直接放入driver.find_element_by_xpath去定位,后来发现是不行的,然后又定义了一个函数,将driver.find_element_by_xpath放在函数中去执行,也不行,在网上借鉴了各路大神的文章。说要使用expected_conditions as EC这个东西,然后我又去借鉴EC是个什么,发现EC下面的方法可以判断当前页面是否有你所需要的元素,然后EC.text_to_be_present_in_element()里面又需要传一个什么By之类的参数,我又得去查,发现By其实也是一种定位方式