Używając selenu 2, czy istnieje sposób na sprawdzenie, czy element jest nieaktualny?Sprawdź, czy nieświeży element używa selenu 2?
Załóżmy, że inicjuję przejście z jednej strony na drugą (A -> B). Następnie wybieram element X i testuję go. Przypuśćmy, że element X istnieje zarówno na A, jak i naB.
Okresowo X jest wybierany z A przed przejściem strony i nie jest testowany, dopóki nie przejdzie do B, podnosząc wyjątek StaleElementReferenceException. Jest to łatwe do sprawdzenia tego warunku:
try:
visit_B()
element = driver.find_element_by_id('X') # Whoops, we're still on A
element.click()
except StaleElementReferenceException:
element = driver.find_element_by_id('X') # Now we're on B
element.click()
Ale wolałbym zrobić:
element = driver.find_element_by_id('X') # Get the elment on A
visit_B()
WebDriverWait(element, 2).until(lambda element: is_stale(element))
element = driver.find_element_by_id('X') # Get element on B