如何将2 xpath合并为一个

时间:2017-11-14 05:23:28

标签: java html xpath selenium-webdriver

HTML

<li class="wdappchrome-ai" data-automation-id="searchInputAutoCompleteResult" tabindex="-2" aria-posinset="1" aria-setsize="3">
<span data-automation-id="searchInputAutoCompleteResultFullText">
    <span style="font-weight:500">
        <span data-automation-id="searchInputAutoCompleteResultToken" style="font-weight:400">mike</span>
        <span data-automation-id="searchInputAutoCompleteResultToken" style="font-weight:400">diana</span>
    </span>
</span>
</li>

我将用户全名划分为spans,因此我想构建xpath,它返回单个list的两个/多个跨度的组合文本。

现在我使用2个或更多xpath,基于用户名分为span。

我使用://li[.//span[text()='mike']] //li[.//span[text()='diana']]

然后我在xpath之上执行gettext()并使用Java语法合并。所以我正在寻找能够提供上述特定span标记内所有li全文的解决方案。

2 个答案:

答案 0 :(得分:1)

尝试使用以下XPath来匹配元素的一个跨度:

//li[.//span='diana' or .//span='mike']

或两个跨度:

//li[.//span='diana' and .//span='mike']

答案 1 :(得分:0)

要在一行中获取特定li标签内所有范围的全文,您可以使用以下代码块:

ArrayList<String> nameList = new ArrayList<String>();
List<WebElement> firstName_lastname = driver.findElements(By.xpath("//li[@class='wdappchrome-ai']//span[@data-automation-id='searchInputAutoCompleteResultToken']"));
for (WebElement fN_lN:firstName_lastname)
    nameList.add(fN_lN.getAttribute("innerHTML"));
System.out.println(nameList);