我有一个案例需要找出现在显示的按钮。我首先尝试这种方式 {请不要介意我的助手功能。我认为你很容易理解Ui.find_el它和driver.find_element_by几乎一样....}:
if Ui.find_el(link.AuthorPopupNodes.LOGIN_EMAIL).is_displayed():
pass
else:
if Ui.find_el(link.HeaderNodes.LOGOUT_BUTTON).is_displayed():
self.log_out()
Ui.wait_for_element(link.HeaderNodes.LOGIN_BUTTON, "Timeout: Wait for Login button!")
Ui.click_el(link.HeaderNodes.LOGIN_BUTTON)
但是它开始出现驱动程序无法找到元素的错误,所以我通过尝试覆盖它,但它也不适用于我。
try:
if Ui.find_el(link.AuthorPopupNodes.LOGIN_EMAIL).is_displayed():
pass
else:
if Ui.find_el(link.HeaderNodes.LOGOUT_BUTTON).is_displayed():
self.log_out()
Ui.wait_for_element(link.HeaderNodes.LOGIN_BUTTON, "Timeout: Wait for Login button!")
Ui.click_el(link.HeaderNodes.LOGIN_BUTTON)
except:
pass
例如,如果第一个IF失败,那么它从尝试中退出,我需要检查是否有LOGOUT按钮。是否可以不经过尝试检查元素,但也没有硒错误?
答案 0 :(得分:1)
您可以抓住specific selenium errors,例如:
from selenium.common.exceptions import NoSuchElementException, ElementNotVisibleException
try:
Ui.find_el(link.AuthorPopupNodes.LOGIN_EMAIL)
except (NoSuchElementException, ElementNotVisibleException):
try:
Ui.find_el(link.HeaderNodes.LOGOUT_BUTTON)
self.log_out()
except (NoSuchElementException, ElementNotVisibleException):
pass
Ui.wait_for_element(link.HeaderNodes.LOGIN_BUTTON, "Timeout: Wait for Login button!")
Ui.click_el(link.HeaderNodes.LOGIN_BUTTON)