Добрый день!
Недавно начал работать с Selenium.
Возникла интересная ситуация, возможно кто-то сможет объяснить как это происходит и как этого избежать.
На сайте выводится ФИО пользователя
В настройках профиля есть возможность скрыть ФИО. Элемент пропадает из DOM, не просто проставляется стиль для элемента, что он скрыт, а именно пропадает.
В тесте необходимо проверить, что элемента действительно нет.
А теперь самое интересное. Ниже написан метод, который проверяет наличие элемента двумя разными способами.
В первом случае при помощи FindsBy он пишет, что элемент не равен NULL, а во втором случае пишет, что равен (соответственно второй случай верный). Вопрос почему первый случай возвращает не NULL, и что с этим делать)
internal void IsHiddenUsername()
{
if (UserName != null)
{
//
}
if (Username() != null)
{
//
}
}
[FindsBy(How = How.ClassName, Using = "account-widget__username")]
internal IWebElement UserName;
private IWebElement Username()
{
try
{
IWebElement element = driver.FindElement(By.ClassName("account-widget__username"));
return element;
}
catch
{
return null;
}
}
Вот что возвращается в первом if (это не сам элемент, а что-то другое):
При этом естественно при попытке вернуть например текст UserName.Text вываливается NoSuchElementException