使用硒2,有没有办法测试一个元素是否陈旧?使用硒2检查陈旧元素?
假设我启动了从一个页面到另一个页面的转换(A→B)。然后我选择元素X并测试它。假设元素X同时存在于A和B上。
间歇性地,在页面转换发生之前X会从A中选择,而在进入B之后才会测试X,引发StaleElementReferenceException。这很容易检查此条件:
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()
但我宁愿做:
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