2015-10-10 39 views
2

我需要檢查用戶是否已經登錄到應用程序。所以我必須檢查下面提到的3個元素中的任何一個。如果其中任何一個人在場,用戶已登錄,我需要點擊退出按鈕。嘗試在Appium Python中使用ellif

的要素是:1。 退出按鈕已經存在(因爲用戶已登錄) 2.帳戶名

我的腳本是這樣的:

if(wd.find_element_by_name("sign out").is_displayed()): 
     wd.find_element_by_name("sign out").click()  
elif(wd.find_element_by_name("usr_name").is_displayed()): 
     wd.find_element_by_name("usr_name").click() 
     wd.find_element_by_name("menu_close").click() 
     wait("sign out") 
     wd.find_element_by_name("sign out").click() 
else: 
     print"NOt Signed in" 

但發生的事情是我的appium正在執行第一個IF循環並等待元素退出,並以錯誤消息結束。

An element could not be located on the page using the given search parameters. 

我在哪裏做錯了?通常,我怎麼能檢查一個元素是否存在,然後點擊它,就像那樣。請幫幫我。

+1

什麼是完整的回溯? –

回答

1

不應該被ELIF不縮進這樣的:

if(wd.find_element_by_name("sign out").is_displayed()): 
     wd.find_element_by_name("sign out").click()  
elif(wd.find_element_by_name("usr_name").is_displayed()): 
     wd.find_element_by_name("usr_name").click() 
     wd.find_element_by_name("menu_close").click() 
     wait("sign out") 
     wd.find_element_by_name("sign out").click() 
else: 
     print"NOt Signed in" 
+0

對不起,它的複製粘貼錯誤的論壇。 –

+0

所以代碼的格式是這樣的? –

+0

是的。它已經被格式化,就像你提到的 –

0

你應該在每個命令後使用wd.implicitly_wait(30),使appium服務器等待如果你想檢查下一個元素是visble

0

一個元素在觸發動作之前就存在,只需創建一個基於元素的isDisplayed屬性返回布爾值的方法。

事情是這樣的:

def IsElementDisplayed(): 
    try: 
     return wd.find_element_by_name("sign out").is_displayed() 
    except: 
     return false 

從測試sript每個動作之前調用IsElementDisplayed。