如果找到Element,如何通过测试失败,如果找不到元素,则通过测试?

时间:2014-08-13 01:52:07

标签: c# unit-testing selenium-webdriver

我必须开发一个单元测试,如果元素存在则会失败,如果元素不存在则通过测试。

详细说明,我有一个简单的表格,如姓名,电子邮件,地址等。当我点击保存按钮时,如果必填字段为空,则会显示错误消息。如果显示错误消息,那么我必须通过测试,如果没有显示,则通过测试。有没有解决方案?

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提前。

2 个答案:

答案 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,则传递测试,反之亦然