2015-07-20 25 views
1

我有一個測試箱子:驗證不存在元件

Assert.assertTrue(test .verifyNoDrillDisplayForCourses()); 

boolean方法verifyNoDrillDisplayForCourses從而驗證element("xyz")未顯示,

try{ 
     if(element("xyz"). isDisplayed()) 
     return false; 

    else return true; 
    } 
    catch (Exception e) 
    { 

     return false; 
    } 
    } 

但斷言失敗作爲java .lang .AssertionError:expected [true]但發現[false]。我無法弄清楚爲什麼?

+0

您需要發佈更多的代碼來得到回答 – NovusMobile

+0

這是代碼,我只需要驗證該元素沒有顯示,但我很困惑什麼返回語句添加爲了使斷言真實。 – Rkstr22

+0

如果屏幕沒有顯示,那麼make是false,那麼你的斷言將爲真 – NovusMobile

回答

2

如果給定元素不在DOM中,則isDisplayed()方法將拋出StaleElementReferenceException。因此,您必須將捕獲聲明更改爲return true;

+0

如果斷言失敗,我的斷言仍然失敗 – Rkstr22

+0

這意味着你的元素是可見的不是嗎? – peetya

+0

我的元素不可見,那就是問題所在。 – Rkstr22

1

如果您正在測試某個元素的存在,如果未找到,則會拋出異常。所以,如果你發現它返回false,如果你找不到它,你也會返回false。

當測試不存在的一個元素,你應該有catch塊返回true

try{ 
     if(element("xyz").isDisplayed()) { 
      return false; 
     } else return true; 
    } 
    catch (Exception e) 
    { 

    return false; 
    } 
    } 

我相信你的if語句缺少正確的格式從你複製過來。

我上面修改,但在情況下,嘗試這樣的:

if(element("xyz").isDisplayed()) { 
     return false; 
    } else return true; 
+0

除了在捕獲中返回true,我還需要對方法進行任何更改。 – Rkstr22

+0

不是我能說出我的頭頂。您可以將異常類型更改爲找不到的元素,但除此之外,您的代碼看起來很好。 – Iridann

+0

我試過返回true,但我的斷言仍然失敗。 – Rkstr22

0

下面的代碼幫助:

public boolean verifyNoelement() 

{ 

try 


{ 
      if(element("element").isDisplayed()) 
      { 
      return false; 
      } 
      return false; 
     } 
     catch(Exception e) 
     { 
      logMessage("No element displayed"); 
      return true; 
     } 


    }