Skip to content Skip to sidebar Skip to footer

Webdriver Wait For One Of A Multiple Elements To Appear

Is there a way to get a webDriverWait to wait for one of a number of elements to appear and to act accordingly based on which element appears? At the moment I do a WebDriverWait wi

Solution 1:

Create a function that takes a map of identifiers to xpath queries and returns the identifier that was matched.

defwait_for_one(self, elements):
    self.waitForElement("|".join(elements.values())
    for (key, value) in elements.iteritems():
        try:
            self.driver.find_element_by_xpath(value)
        except NoSuchElementException:
            passelse:
            return key

defothermethod(self):

    found = self.wait_for_one({
        "mime": "//a[contains(text(), '%s')]",
        "exists_error": "//li[contains(text(), 'That file already exists')]"
    })

    if found == 'mime':
        do stuff ...
    elif found == 'exists_error':
        do other stuff ...

Solution 2:

Something like that:

defwait_for_one(self, xpath0, xpath1):
    self.waitForElement("%s|%s" % (xpath0, xpath1))
    returnint(self.selenium.is_element_present(xpath1))

Post a Comment for "Webdriver Wait For One Of A Multiple Elements To Appear"