2014-10-20 82 views
-1

我有一個案例,當我需要找出現在顯示的按鈕。我以這種方式嘗試第一個 {請不要介意我的幫手功能。我認爲,你可以很容易明白,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失敗,它會從try中跳出來,我需要檢查是否有LOGOUT按鈕。是否有可能檢查元素沒有嘗試,但也沒有硒錯誤?

回答

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) 
+0

謝謝!現在我明白我需要像IF一樣使用try。 – Michael 2014-10-22 20:47:22