Currently I use implicit wait to locate elements before issuing any action upon them. See example of implicit wait:
WebDriverWait(browser,10).until(EC.presence_of_element_located(By.XPATH(('xpath')))
This works fine when dealing with a single element. However, it appears that if the xpath relates to multiple elements then EC.presence_of_element_located()
will time out. My question is, how do I do an implicit wait for multiple elements?
Single element -
WebDriverWait(browser,10).until(EC.presence_of_element_located(By.XPATH(('xpath')))
browser.find_element_by_xpath('xpath')
Multiple element -
??
browser.find_elements_by_xpath('xpath')
Note: Notice use of find_elements_by_xpath()
in multiple element instance instead of using find_element_by_xpath()
I'm over two years late but I want to post this in case someone googles their way here like I did. You can use
WebDriverWait(browser, 10).until(
EC.presence_of_all_elements_located((By.XPATH, 'xpath'))
)
and that will return all of them. You don't need to do
browser.find_element_by_xpath('xpath')
after your explicit wait because WebDriverWait(browser,10).until(...)
will return the element(s) you are waiting for.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With