我必须开发一个单元测试,如果元素存在则会失败,如果元素不存在则通过测试。
详细说明,我有一个简单的表格,如姓名,电子邮件,地址等。当我点击保存按钮时,如果必填字段为空,则会显示错误消息。如果显示错误消息,那么我必须通过测试,如果没有显示,则通过测试。有没有解决方案?
try
{
//Click on save button
IWebElement save_profile = driver.FindElement(By.XPath("//div[@class='form-group buttons']/div/input"));
save_profile.Click();
//Locate Error Message below the text box
IWebElement FirstNameError = driver.FindElement(By.XPath("//form[@class='default form-horizontal']/fieldset/div[4]/div[2]/span/div"));
//I want to fail the test here if above element is found
}
catch
{
//pass the test if element is not found in try statement
}
我认为我的方向错误但无法找到解决方案。请指教。 Thansk提前。
答案 0 :(得分:2)
以下是“findElement”的行为 如果您要查找的元素存在,则返回WebElement。 如果该元素不存在,则抛出异常,如果处理不当会导致麻烦。
所以使用“findElements”(此处观察's') 以下是“findElements”的行为 它返回一个列表, 如果元素存在,则大小明显大于0, 如果元素不存在,则大小为0.因此,您可以放置一个大小为
的if条件这是Java中的伪代码
if (driver.findElements(By.XPath("//div[@class='form-group buttons']/div/input")).size()>0)
//print element exists
else
//print element does not exists.
我希望以上有所帮助。
答案 1 :(得分:0)
您有两种选择。
首先,使用Assert.assertTrue(boolean value);
try
{
//Click on save button
IWebElement save_profile = driver.FindElement(By.XPath("//div[@class='form-group buttons']/div/input"));
save_profile.Click();
//Locate Error Message below the text box
IWebElement FirstNameError = driver.FindElement(By.XPath("//form[@class='default form-horizontal']/fieldset/div[4]/div[2]/span/div"));
//I want to fail the test here if above element is found
Assert.assertTrue(false);
}
catch
{
//pass the test if element is not found in try statement
Assert.assertTrue(true);
}
其次,如果在方法中使用布尔返回类型。:
boolean isValidated = false;
try
{
//Click on save button
IWebElement save_profile = driver.FindElement(By.XPath("//div[@class='form-group buttons']/div/input"));
save_profile.Click();
//Locate Error Message below the text box
IWebElement FirstNameError = driver.FindElement(By.XPath("//form[@class='default form-horizontal']/fieldset/div[4]/div[2]/span/div"));
//I want to fail the test here if above element is found
isValidated =false;
return isValidated;
}
catch(Exception e)
{
//pass the test if element is not found in try statement
isValidated = true;
return isValidated;
}
如果方法返回true,则传递测试,反之亦然