如何使用xpath定位单个标记下的多个属性/标记

时间:2017-12-25 08:07:04

标签: java selenium xpath selenium-webdriver

请参阅此示例代码:

<div class="menu"> 
    <a href="one.html">One</a>
    <a href="two.html">Two</a>
    <button type="button">Three</button>
    <button type="button">Four</button>
        <div class="menu2">
            <a href="five.html">Five</a>
            <a href="six.html">Six</a>  
        </div>
        <div class="menu3">
            <a href="seven.html">Seven</a>
            <button type="button">Eight</button>
        </div>
</div>

我正试图找到一个&#39;标签和&#39;按钮&#39;标记使用单个xpath。

我可以使用cssSelector和以下代码来实现:

List<WebElement> list = d.findElements(By.cssSelector("div[class='menu'] a, div[class='menu'] button"));

for (WebElement l: list) {
System.out.println(l.getText());
}

但我想用xpath做。

2 个答案:

答案 0 :(得分:1)

尝试使用以下XPath来匹配abutton

//div[@class="menu"]//*[name()=("a" or "button")]

//div[@class="menu"]//*[self::a or self::button]

答案 1 :(得分:0)

您也可以使用Jsoup获取所有数据。我有一些例子:

Document doc = Jsoup.parse(content);
Elements elements = doc.select("div.menu a");
for (Element element : elements) {
  String url = element.attr("href");
}