Вопрос:

Селен - получение правильного количества меню

selenium xpath

97 просмотра

3 ответа

395 Репутация автора

Я пытаюсь получить количество ссылок из верхнего меню.

http://test1.absofttrainings.com/

Вот xpath, который я использую:

List<WebElement> home_menu=br.driver.findElements(By.xpath("//a[contains(@href,'http://test1.absofttrainings.com/')]/following-sibling::*//a"));
System.out.println(home_menu.size());

Проблема: он печатает 17, а я ожидаю 6. Каков будет правильный способ написания xpath, чтобы он печатал 6?

Больше информации:

List<WebElement> home_menu=br.driver.findElements(By.xpath("//a[contains(@href,'http://test1.absofttrainings.com/')]/following-sibling::*//a"));
        System.out.println(home_menu.size());
        for(WebElement e: home_menu){
            System.out.println(e.getText());
        }

распечатать: 17 Главная Магазин Корзина Мои данные Тестовые страницы

Как пользоваться

Автор: Sheikh Rahman Источник Размещён: 13.01.2018 07:51

Ответы (3)


0 плюса

39827 Репутация автора

Решение

Попробуйте использовать ниже XPath, чтобы получить только необходимые (6) элементы

//ul[@id='top-menu']/li/a
Автор: Andersson Размещён: 13.01.2018 08:12

0 плюса

1 Репутация автора

Выполнение $ x ("// a [содержит (@href, ' http://test1.absofttrainings.com/ ')] / follow -sibling :: * // a") в консоли браузера позволяет получить 17 объектов ,

На сайте есть скрытое меню для мобильных устройств, и ваш xpath не может от него избавиться. Удалив, теперь осталось 8 объектов. Эти 8 ссылок на самом деле являются первыми 6 пунктами меню + 2 элементами подменю в разделе «Тестовые страницы». Другими словами, кнопка поиска также не фиксируется вашим xpath.

Для выбора первых 6 пунктов меню выполните этот xpath, $ x ("// nav [@ id = 'top-menu-nav'] / ul / li / a")

Автор: Kai Leong Ling Размещён: 13.01.2018 08:17

0 плюса

2 Репутация автора

public static void Count_menu() {   

     List<WebElement> links = driver.findElements(By.xpath("//a[contains(@href,'http://****=')]"));

     System.out.println("Total menu are "+links.size());
     int no=1;
     for (int i = 1; i<links.size(); i=i+1)      
     {      
         if(links.get(i).getText().isEmpty()) {

         }
         else
         {
             System.out.println(links.get(i).getText());
            no++;               
         }       
     }  
     System.out.println("Total final menu are "+no);        
    }
Автор: Suneel Sharma Размещён: 06.05.2019 07:54
Вопросы из категории :
32x32