o webdriver espera que um dos vários elementos apareça

Existe uma maneira de obter umwebDriverWait esperar que um dos vários elementos apareça e agir de acordo com o elemento que aparece?

No momento eu faço umWebDriverWait dentro de um loop try e se ocorrer uma exceção timeout, executo o código alternativo que aguarda a exibição do outro elemento. Isso parece desajeitado. Existe uma maneira melhor? Aqui está o meu código (desajeitado):

try:
    self.waitForElement("//a[contains(text(), '%s')]" % mime)
    do stuff ....
except TimeoutException:
    self.waitForElement("//li[contains(text(), 'That file already exists')]")
    do other stuff ...

Envolve aguardar 10 segundos inteiros antes de verificar se a mensagem de que o arquivo já existe no sistema.

A funçãowaitForElement apenas faz um número deWebDriverWait chama assim:

def waitForElement(self, xPathLocator, untilElementAppears=True):
    self.log.debug("Waiting for element located by:\n%s\nwhen untilElementAppears is set to %s" % (xPathLocator,untilElementAppears))
    if untilElementAppears:
        if xPathLocator.startswith("//title"):
            WebDriverWait(self.driver, 10).until(lambda driver : self.driver.find_element_by_xpath(xPathLocator))
        else:
            WebDriverWait(self.driver, 10).until(lambda driver : self.driver.find_element_by_xpath(xPathLocator).is_displayed())
    else:   
        WebDriverWait(self.driver, 10).until(lambda driver : len(self.driver.find_elements_by_xpath(xPathLocator))==0)

Alguém tem alguma sugestão para conseguir isso de uma maneira mais eficiente?

questionAnswers(2)

yourAnswerToTheQuestion