Я автоматизирую форму, сценарий, когда дается недопустимая запись, сообщение "Успех" не должно появляться
Я попытался проверить это, используя
s_assert.assertEquals(driver.findElement(By.xpath("//div[contains(.,'Succes')]")).isDisplayed(), false);
Но во время работы он показывает "Невозможно найти элемент:"
Сообщение появляется только в том случае, если мой тест завершился неудачно. Поэтому ожидаемое поведение состоит в том, что элемент не будет присутствовать.
Как сказать webdriver
просто проверить, присутствует ли он и не бросать ошибку! Заранее спасибо...
Проблема, с которой вы сталкиваетесь, не связана с механизмом Assertion скорее найти элемент. Вы ожидаете элемент, который не был расположен Selenium
и, следовательно, код не достиг до утверждения
Вы должны делать какую-то обработку исключений в зависимости от того, что вы хотите. перед утверждением.
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);
}
Примечание: у меня есть С# и 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']")); if (b) {s_assert.assertEquals("Успех: скоро вас свяжут наши эксперты", driver.findElement(By.cssSelector("div.alert-box.success")). getText()); } }
}