python – 我可以重用WebDriverWait对象吗?

我有一个页面对象,它与DOM上的少数元素交互.如果我在页面对象初始化上创建一个WebDriverWait对象作为实例成员,我可以将它用于所有等待吗?

或者,如果我想等待两个单独的元素,最好有两个WebDriverWaits?

我遇到了一些奇怪的TimeoutExceptions,我想它可能就是这样.喜欢:

class MyPage(object):
    def __init__(self, driver):
        self.driver = driver
        self.wait = WebDriverWait(driver, 10)

    def get_search_box(self):
        return self.wait.until(EC.presence_of_element_located('srch'))

    def get_search_btn(self):
        return self.wait.until(EC.presence_of_element_located('btn'))

与:

    def get_search_btn(self):
        wait = WebDriverWait(self.driver, 10)
        return wait.until(EC.presence_of_element_located('btn'))
最佳答案
我猜你需要的是一个可以根据需要重复使用的功能.看一下以下函数,例如:

def wait_for_element_to_be_visible(self, *locator):
    """Wait for an element to become visible"""
    self.selenium.implicitly_wait(0)
    try:
        WebDriverWait(self.selenium, self.timeout).until(
            lambda s: self._selenium_root.find_element(*locator).is_displayed())
    except TimeoutException:
        Assert.fail(TimeoutException)
    finally:
        self.selenium.implicitly_wait(self.testsetup.default_implicit_wait)

转载注明原文:python – 我可以重用WebDriverWait对象吗? - 代码日志