¿Hay alguna manera de obtener un webDriverWait
para esperar la aparición de uno de los elementos y actuar según el elemento?webdriver esperar a que aparezca uno de los elementos múltiples
Por el momento hago un WebDriverWait
dentro de un ciclo de prueba y si ocurre una excepción de tiempo de espera ejecuto el código alternativo que espera a que aparezca el otro elemento. Esto parece torpe ¿Hay una mejor manera? Aquí está mi (torpe) Código:
try:
self.waitForElement("//a[contains(text(), '%s')]" % mime)
do stuff ....
except TimeoutException:
self.waitForElement("//li[contains(text(), 'That file already exists')]")
do other stuff ...
Se trata de esperar todo un 10 segundos antes de que se mira para ver si el mensaje que el archivo ya existe en el sistema.
La función waitForElement
solo que una serie de WebDriverWait
llamadas así:
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)
Alguien tiene alguna sugerencia para lograr esto de una manera más eficiente?
gracias. Eso funcionará – amadain