How To Use Webdriverwait From Selenium Properly Through Python?
Solution 1:
Short answer, No, though syntactically correct but you aren't using WebDriverWait optimally.
Along with WebDriverWait you are also using time.sleep()
.
time.sleep(secs)
time.sleep(secs)
suspends the execution of the current thread for the given number of seconds. The argument may be a floating point number to indicate a more precise sleep time. The actual suspension time may be less than that requested because any caught signal will terminate the sleep() following execution of that signal’s catching routine. Also, the suspension time may be longer than requested by an arbitrary amount because of the scheduling of other activity in the system.
You can find a detailed discussion in How to sleep webdriver in python for milliseconds
Moreover,
In the
for
loop as you intent to iterate instead of/tr[{x}]
you need//tr[{x}]
To collect the desired text you you need to use
visibility_of_element_located()
.<button>
are interactive in nature, so instead ofpresence_of_element_located()
you need to useelement_to_be_clickable()
just when you need to interact with them.A probhable solution:
for x,sequence in enumerate(table.find_elements_by_xpath('//*[@id="gwzSngrOrderResultPanelRoot"]/table/tbody/tr/td[9]'),1): WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="gwzSngrOrderResultPanelRoot"]/table/tbody//tr[{x}]/td[9]/span[2]'))).click() seq_list.append(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//*[@id='gwzViewResultsModalDialog']/div/div/div[2]/div"))).text) WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="gwzViewResultsModalDialog"]/div/div/div[3]/button'))).click()
Post a Comment for "How To Use Webdriverwait From Selenium Properly Through Python?"