2012-12-11 88 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