我想从顶层菜单中获取一些链接。
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
家
店
大车
我的帐户
测试页
如何使用
答案 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);
}