Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

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

webdriver
Теги: #<Tag:0x00007f7b70aee780>

#1

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

  • Нажать на кнопку. Проверить факт смены 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);

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


(Ray Romanov) #2

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


(Sergey Korol) #3

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


#4

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

assertTrue( curretnurlpage.equals(currenturlnews));

(Ray Romanov) #5
assertNotEquals(curretnurlpage, currenturlnews);

(Sergey Korol) #6

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

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

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


#7

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

assertTrue(!curretnurlpage.equals(currenturlnews));

или

assertFalse(curretnurlpage.equals(currenturlnews));

Спасибо.


(Павел) #8

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


(Sergey Korol) #9

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


#10

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


(sidelnikovmike) #11

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