我有一个测试用例停止并抛出错误“未找到元素”。
现在我想做的是,我希望selenium ide能够刷新页面并从头开始运行脚本。
我想知道的是,有没有办法在Selenium IDE中实现这一点。如果是,怎么样?
答案 0 :(得分:0)
是的,当然。首先,你应该有一个try-except-else
结构。然后你应该有一个while True
循环并指定NoSuchElementException
从循环开始继续。在此except
块的第一行中,您将一行设为driver.refresh()
。在else
阻止你break
循环,并认为你应该有两个except
块;一个用于NoSuchElementException
,另一个用于其他例外。在第二个你应该break
我猜的循环。这是一个示例代码:
import selenium.common.exceptions as SeleniumExceptions
from selenium import webdriver
import sys
driver = webdriver.Firefox()
while True:
try:
element = driver.find_element_by_id('some_id')
# do whatever you want
except SeleniumExceptions.NoSuchElementException:
driver.refresh()
continue
except:
print sys.exc_info()
break
else:
break
<强> EDIT1:强>
如果您必须使用特定的frame
或iframe
,则应使用driver.switch_to_frame(driver.find_element_by_id('frame_id'))
切换回来并继续工作;或者如果您认为应该等待加载帧,可以使用以下代码:
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
WebDriverWait(driver, timeout=10).until(EC.frame_to_be_available_and_switch_to_it(driver.find_element_by_id('frame_id')))