如果存在消息,则与软断言混淆

Confusion with Soft asserting if a message is present

我正在自动化一个表单,场景是,当给出无效条目时,消息 'Success' 不应该出现

我尝试使用

进行检查
s_assert.assertEquals(driver.findElement(By.xpath("//div[contains(.,'Succes')]")).isDisplayed(), false);

但是,虽然 运行,它显示 'Unable to locate element:'

仅当我的测试失败时才会显示该消息。所以预期的行为是,元素不会出现。

如何告诉 webdriver 只检查它是否存在而不抛出错误!提前致谢...

您遇到的问题与断言无关,而是与查找元素机制有关。您期待 Selenium 未找到的元素,因此代码直到 Assertion

才到达

您必须根据需要进行某种异常处理。在断言之前。

public bool Test()
{
    try
    {

        Driver.FindElement(By.Id("test"));
        return true;
    }
    catch (Exception ex)
    { // catch the exception you want
        return false;
    }
}

public void TestAssert()
{
    Assert.AreEqual(Test(),false);
}

注意:我的是 C# 和 NUnit

谢谢...我添加了以下代码解决了我的问题。

     public static boolean isElementPresent(String xpath) {
          try {
           driver.findElement(By.xpath(xpath));
           return true;
          } catch (Exception e) {
           return false;
          }
         }

     public void formsNegetive() {                  

boolean b = isElementPresent(("//div[@class='alert-box success']")); 如果(二){ s_assert.assertEquals("Success: You will be contacted by our experts soon.", driver.findElement(By.cssSelector("div.alert-box.success")).getText()); }
}