【问题标题】:How to locate multiple attribute/tags present under single tag with xpath如何使用 xpath 定位单个标签下存在的多个属性/标签
【发布时间】:2017-12-25 08:07:03
【问题描述】:

请参考此示例代码:

<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>

我正在尝试使用单个 xpath 定位“a”标签和“按钮”标签。

我可以使用带有以下代码的 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 来做。

【问题讨论】:

标签: java selenium xpath selenium-webdriver


【解决方案1】:

尝试使用下面的 XPath 来匹配 abutton

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

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

【讨论】:

  • 谢谢。很抱歉没有将其包含在原始帖子中。但是实际代码有更多嵌套的 div、a 和 button 标签,因为这个 &lt;div class="menu"&gt; &lt;a href="one.html"&gt;One&lt;/a&gt; &lt;a href="two.html"&gt;Two&lt;/a&gt; &lt;button type="button"&gt;Three&lt;/button&gt; &lt;button type="button"&gt;Four&lt;/button&gt; &lt;div class="menu2"&gt; &lt;a href="five.html"&gt;Five&lt;/a&gt; &lt;a href="six.html"&gt;Six&lt;/a&gt; &lt;/div&gt; &lt;div class="menu3"&gt; &lt;a href="seven.html"&gt;Seven&lt;/a&gt; &lt;button type="button"&gt;Eight&lt;/button&gt; &lt;/div&gt; &lt;/div&gt; 这个 xpath 只选择父 div 中的 a 和 button 标签,而不是嵌套 div 中的标签
  • 试试//div[@class="menu"]//*[name()=("a" or "button")]//div[@class="menu"]//*[self::a or self::button]
  • @Andersson //div[@class="menu"]//*[name()=("a" or "button")] 也选择嵌套的 div,但 //div[@class="menu"]//*[self::a or self::button] 工作得很好。谢谢。
【解决方案2】:

你也可以使用Jsoup来获取所有的数据。这里我有一些例子:

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

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签