硒 - 获得正确的菜单数量

时间:2018-01-13 07:51:32

标签: selenium xpath

我想从顶层菜单中获取一些链接。

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 家 店 大车 我的帐户 测试页

如何使用

3 个答案:

答案 0 :(得分:0)

尝试使用以下XPath来获取所需的(6)元素

//ul[@id='top-menu']/li/a

答案 1 :(得分:0)

执行$ x(&#34; // a [包含(@href,&#39; http://test1.absofttrainings.com/&#39;)] / follow-sibling :: * // a&#34;)在浏览器控制台中,有17个对象。

网站中有一个隐藏的移动设备菜单,你的xpath无法摆脱它。通过删除,现在剩下8个对象。 这8个链接实际上是&#34;测试页面&#34;下的前6个菜单项+ 2个子菜单​​项。换句话说,xpath也不会捕获搜索按钮。

要选择前6个菜单项,请执行此xpath, $ X(&#34; // NAV [@id =&#39;顶部菜单-NAV&#39;] / UL / LI / A&#34)

答案 2 :(得分:0)

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);        
    }