如果找到Element,如何使测试失败,如果没有找到Element,如何使测试通过

本文关键字:何使 测试 Element 如果没有 失败 如果 | 更新日期: 2023-09-27 18:17:56

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

详细地说,我有一个简单的形式,如姓名,电子邮件,地址等。当我单击save按钮时,如果required字段为空,则显示错误消息。如果显示错误信息,那么我必须失败的测试,如果没有显示,然后通过测试。有解决办法吗?

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
}

我想我走错方向了,但我找不到解决办法。请建议。提前感谢。

如果找到Element,如何使测试失败,如果没有找到Element,如何使测试通过

下面是" finelement "的行为如果您正在查找的元素存在,它将返回WebElement。如果元素不存在,则抛出异常,如果处理不当则会导致问题。

所以使用"findElements"(这里注意最后的's')以下是"findElements"的行为它返回一个列表,如果元素存在,则大小明显大于0,如果元素不存在,则大小为0。所以你可以输入一个if条件size为

下面是Java中的伪代码

if (driver.findElements(By.XPath("//div[@class='form-group buttons']/div/input")).size()>0)
 //print element exists
else
 //print element does not exists.

您有两个选择。

首先,使用Assert。

assertTrue(布尔值);
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,则通过测试,反之亦然