Mic*_*ata 5 python selenium-webdriver
使用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()
Run Code Online (Sandbox Code Playgroud)
但我宁愿这样做:
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
Run Code Online (Sandbox Code Playgroud)
我不知道你在那里使用什么语言,但解决这个问题所需的基本想法是:
boolean found = false
set implicit wait to 5 seconds
loop while not found
try
element.click()
found = true
catch StaleElementReferenceException
print message
found = false
wait a few seconds
end loop
set implicit wait back to default
Run Code Online (Sandbox Code Playgroud)
注意:当然,大多数人不会这样做。大多数时候,人们使用 ExpectedConditions 类,但是,在需要更好地处理异常的情况下,此方法(我在上面指出)可能会更好。
归档时间: |
|
查看次数: |
2576 次 |
最近记录: |