2012-12-11 86 views
0

我有以下代碼。斷言失敗。無法確定原因?

String rowNum = Integer.toString(rand.nextInt(max - min + 1) + min); 
WebElement randomRow = driver.findElement(By.xpath("/html/body/div/div/div/div/form/div/div[2]/div/div[2]/div/div/div/div/div/div/div/table/tbody/tr["+rowNum+"]/td/div/input")); 
Assert.assertEquals(randomRow.getAttribute("checked").equals("checked"), "checked", "YES is not selected"); 

基本上randomRow是從表中的隨機行,我正在檢查其中有一個單選按鈕的第一列。單選按鈕應該具有checked =「checked」的屬性。

當測試擊中它與下面失敗的斷言:

YES is not selected expected [checked[ but found ]false] 

爲什麼這個斷言失敗有什麼想法?

+0

這是Java和硒? – munk

+0

是的,它是Java和Selenium。 – DarthOpto

回答

1

您的斷言失敗,因爲您正在比較兩個對象的身份,一個布爾值和一個字符串。你應該比較一個布爾值或一個字符串。

randomRow.getAttribute("checked").equals("checked") 

返回一個布爾值,你要比較這對字符串「檢查」。你的說法應該是:

如果要檢查行有「選中」屬性,你可以更簡潔地寫你的斷言是這樣的:

Assert.assertEquals(randomRow.getAttribute("checked"), "checked", "YES is not selected"); 
+0

我做到了,但仍然失敗。說:「是不是選擇預期[真的[但找到]假]」 – DarthOpto

+0

我懷疑你的測試現在實際上失敗,因爲對象沒有被檢查。什麼是System.out.println(randomRow.getAttribute(「checked」)的輸出) – munk

+0

如果您使用的是螢火蟲,您還可以驗證該屬性是否爲「已檢查」(小寫字母c)而不是「已檢查」(大寫C) – munk