Как убедиться, что URL-адреса перенаправляются на соответствующую страницу в Selenium? - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь автоматизировать - проверка верхних навигационных ссылок https://www.zillow.com. enter image description here

Для этого я сопоставляю фактические URL-адреса с ожидаемыми URL-адресами. Но в методе класса страницы эта строка возвращает значение null. Я не понимаю, почему?

String urlp = locator.all_topnav_links.get(i).getAttribute("href");

Метод в классе страницы:

public void verify_topnav_links() {
        System.out.println("Started");
        for (int i = 0; i < locator.all_topnav_links.size(); i++) {
            System.out.println(locator.all_topnav_links.size());
            if (locator.all_topnav_links.get(i).isDisplayed() == true) {
                String link=locator.all_topnav_links.get(i).getText();
                System.out.println(link);
                String urlp = locator.all_topnav_links.get(i).getAttribute("href");
                System.out.println("Links are : " + urlp);
                // now click link one by one
                locator.all_topnav_links.get(i).click();
                driver.navigate().back();
                // 2 verify before url with current opened url
                //Assert.assertEquals(urlp, driver.getCurrentUrl());

            }

Локатор в классе локатора:

@FindAll({@FindBy(xpath = "//ul[@data-zg-section='main']/li")})
    public List<WebElement> all_topnav_links;

Тестовый пример в тестовом классе :

@Test
    public void verify_TopNav_links()
    {

        hpage.verify_topnav_links();
    }

Также я не уверен, правильный ли это подход или нет. Может ли кто-нибудь сказать мне, как лучше всего проверить этот сценарий.

Примечание: zillow.com начнет отображать капчу, если мы откроем несколько раз с использованием селена. Чтобы игнорировать его, вручную удалите параметры catpcha из URL-адреса при выполнении тестового примера.

1 Ответ

1 голос
/ 29 мая 2020

Похоже, вам нужно использовать

//ul[@data-zg-section='main']/li/a

здесь

@FindAll({@FindBy(xpath = "//ul[@data-zg-section='main']/li")})
    public List<WebElement> all_topnav_links;

Этот xpath

//ul[@data-zg-section='main']/li

Кажется, он содержит несколько элементов. Но вы пытаетесь напрямую получить доступ к атрибуту href. Здесь li не имеет атрибута href.

Screenshot

...