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

Аннотация @At и проверка URL страницы


(Natalja Librante Lace) #1

Сорри за возможно совсем новичковский вопрос, но что-то у меня заклинило…
Я работаю
Java+Selenium2+Thucydides+Win7x64
Для класса каждой страницы использую аннотацию @At c целью проверки, в частности навигации сайта

@NamedUrls({@NamedUrl(name = "WelcomePage", url = "example/welcome.xtml") })
@At(urls={"#HOST/host/(en|ru|lv)/example/welcome.xtml"})

 public class WelcomePage extends MainPage {
        public WelcomePage (WebDriver driver) {
         super(driver);
}

В шагах для каждой страницы есть метод:

public WelcomePage getCurrentPage() {
    return getPages().currentPageAt(WelcomePage.class);

}

@Step
public void clickLogout() {
    getCurrentPage().logout();
}

Ранее, если тест переходил не на нужную страницу (т.е. URL не совпадал с указанным в аннотации @At), то я получала ошибку и сообщение, что Thucydides ожидал получить одну страницу, а получил другую

Теперь же в такой же ситуации в тесте просто не находится нужный элемент или текст. Но если элемент все же существует на “неправильной” странице, то все ОК - он ассертится, нажимается и т.д.
Т.е. теперь абсолютно не очевидно, что ссылка или кнопка ведет не туда, куда должна

Подозреваю, что проблема вот в этом:

public WelcomePage getCurrentPage() {
        return getPages().currentPageAt(WelcomePage.class);

    }

однако, метод currentPageAt в классе pages - это именно то, что надо использовать с аннотацией @At судя по документации.

В общем, самостоятельные копания мне не помогли, необходим совет куда копать дальше.


(Вадим Чадюк) #2

Можете проверку сделать текущей страницы методом:

getPages().isCurrentPageAt(WelcomePage.class)

Вернёт true, если находитесь на нужной странице