【python+selenium】三大等待

1、线程等待(强制等待)
time.sleep(5)
使用简单,但是当用例中大量使用时会浪费很多时间,影响用例的执行效率

2、隐式等待
driver.implicitly_wait(10)
使用浏览器对象调用,只需要设置一次,但是每操作一次元素都会等待整个页面加载完成,才会去执行下一步的内容,其实需要的元素可能早就已经出现并可操作了。

3、显示等待
WebDriverWait一般和until一起使用
给定一个时间范围,去循环判断条件是否满足条件,当返回True就进行下一步,否则就会去等待》循环》直到超时报元素未找到为止。
它的使用更加灵活,而且针对的是当前操作的元素,所以不会浪费时间,但是使用复杂,每个元素都需要去写显示等待。
所以为了解决这个弊端,我们的自动化框架应该将查找元素提取成函数/类方法,其他所有页面或流程关键字涉及到查找元素的都要求调用这个函数/类方法,这就简化了代码并实现了等待元素出现后再操作。

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ex

class Base():
    def __init__(self, driver):
        self.driver = driver
        
    def findele(self, *args):
        # return self.driver.find_element(*args)
        # return WebDriverWait(self.driver, 5).until(lambda x: x.find_element(*args))
        return WebDriverWait(self.driver, 5).until(ex.visibility_of(self.driver.find_element(*args)))
        

你可能感兴趣的:(【测试技能】Selenium,python,selenium)