当我有异常时,为什么会出现 NoSuchElement 错误?
Why do I get NoSuchElement error when I have a exception in place?
我有这个可以检查 iframe 是否可用并切换到它。然后我有这段代码检查某个元素是否存在。
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, '//*[@id="stageFrame"]')))
try:
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, '//*[@id="home_video_js"]')))
except NoSuchElementException:
print("No video located")
我不确定为什么我仍然收到错误消息:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="stageFrame"]"}
可能我遗漏了一些重要的东西,但我不知道。
首先, 的代码行超出了 try-except{}
块的范围。所以它永远不会被处理。
接下来,由于您在失败时使用了 WebDriverWait 它应该 return TimeoutException
最后,由于您 使用 id
属性以使其更加规范,您可能希望添加 TAG_NAME 也就是 iframe
。所以有效的代码块将是:
try:
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, '//iframe[@id="stageFrame"]')))
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, '//*[@id="home_video_js"]')))
except TimeoutException:
print("No iframe/video located")
我有这个可以检查 iframe 是否可用并切换到它。然后我有这段代码检查某个元素是否存在。
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, '//*[@id="stageFrame"]')))
try:
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, '//*[@id="home_video_js"]')))
except NoSuchElementException:
print("No video located")
我不确定为什么我仍然收到错误消息:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="stageFrame"]"}
可能我遗漏了一些重要的东西,但我不知道。
首先,try-except{}
块的范围。所以它永远不会被处理。
接下来,由于您在失败时使用了 WebDriverWait 它应该 return TimeoutException
最后,由于您 id
属性以使其更加规范,您可能希望添加 TAG_NAME 也就是 iframe
。所以有效的代码块将是:
try:
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, '//iframe[@id="stageFrame"]')))
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, '//*[@id="home_video_js"]')))
except TimeoutException:
print("No iframe/video located")