Как сравнить, факт смены URL после нажатия на кнопку?

Добрый День! Нужна ваша консультация.
Итак, вот задание:

  • Нажать на кнопку. Проверить факт смены URL !
    Я реализовал , вот так смотрите те код. Меня смущет , правильно я сделал?
String curretnurlpage = driver.getCurrentUrl();
driver.findElement(By.xpath(".//*[@id='news_container']/div[2]/div[2]/div[2]/a[1]")).click();
String currenturlnews =  driver.getCurrentUrl();
assertTrue( curretnurlpage != currenturlnews);

Тест проходит успешно! Если есть иной способ, подскажите буду благодарен! Спасибо!

Можно сказать что единственный :wink:
Можно ожидание добавить 1-2 секунды перед тем как взять новый адрес для сравнения, чтоб уж наверняка…

Интересно вы сравниваете строки. Объекты как сравниваются обычно?

я подумал что так можно сделать?
если вот так , проверка не проходит!

assertTrue( curretnurlpage.equals(currenturlnews));
assertNotEquals(curretnurlpage, currenturlnews);

!= служит для сравнения ссылок и примитивных типов. Есть конечно исключения, как в случае с Integer и некоторым форматом строк, но не суть.

Значения объектов сравниваются при помощи equals.

Логично. В первом случае вы использовали операцию “не”, а во втором - нет. Чего вы ожидали от ассерта, который всегда получает false? URL то не равны. Значит использовать вы должны либо assertFalse, либо !url1.equals(url2);

1 лайк

Спасибо Вам за помощь)) Все получилося!

assertTrue(!curretnurlpage.equals(currenturlnews));

или

assertFalse(curretnurlpage.equals(currenturlnews));

Спасибо.

Могу еще добавить, что обычные String'и лучше ассертить при помощи assertEquals(message, expected, actual). Тогда, если тест упадет, вы увидите не просто фейл ассерта и меседж, а еще и читаемое сообщение вроде expected abc[d], but was: abc[e]

2 лайка

Да, это дельное замечание.

Спасибо, будем пробывать)

Есть еще assertTrue с параметром message, а так же можно использовать матчеры и assertThat. Это скорее так, для общей информации.

1 лайк