【发布时间】:2017-11-10 05:36:45
【问题描述】:
使用 selenium 2,有没有办法测试元素是否过时?
假设我启动了从一页到另一页的转换 (A -> B)。然后我选择元素 X 并对其进行测试。假设元素 X 存在于 A 和 B 上。
在页面转换发生之前,会间歇性地从 A 中选择 X,直到转到 B 之后才进行测试,从而引发 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
【问题讨论】: