web自动化时,由于页面元素加载导致经常报错,此时就需要设置等待,等待设置的 条件成立之后再继续执行代码。常见三大等待如下:
1、time.sleep()
这种比较容易记忆的,也是代码调试中使用较多的一个,但是等待的时间是死的,必须要等到设置的时间到了之后才会继续执行,这样就会产生两个问题,一个是等待时间不够,就会继续报错,另外一个就是等待时间多了,放在整个框架中,导致经常过多等待,影响性能。
2、隐形等待 drive.implicity_wait(5)
这种等待相对比较友好,等待的时间小于等于设置的时间,在设置时间内,只要满足了等待的条件就会停止等待,继续执行代码,避免过多等待。而且只需要设置一次,后续无需重复设置,使用便捷。
3、显性等待
locator= (By.XPATH, "//*[@class='请选择客户名称']")
wait=WebDriverWait(driver,timeout=10)
wait.until(expected_conditions.element_to_be_clickable(locator))
这种等待方式也比较好用,先写成方法,需要用的地方直接调用即可。
三种等待方式不会排斥,可以用其中一种,也可以多个同时使用,