如果属性相同,我们如何获得跨度值

时间:2014-06-03 06:45:20

标签: java xpath selenium-webdriver

<div class="form-row">
<div class="label-column"> Your Renewal Charges</div>
<div class="ctrl-column">
    <span data-bind="html: DisplayTotalrenewalFee">
        <span class="CurrencySymbol">USD</span>
            810.00
    </span>
</div>

并且在同一页面中有另一个具有相同属性的跨度值(html:DisplayTotalrenewalFee)

<div class="label-column"> Amount Sent</div>
<div class="ctrl-column">
    <span data-bind="html: DisplayTotalrenewalFee">
        <span class="CurrencySymbol">USD</span>
            810.00
    </span>
</div>

只有差异

<div class="label-column">values

如何生成两个xpath以获取USD和810.00的值?

3 个答案:

答案 0 :(得分:1)

(//div[@class='ctrl-column']/span[@data-bind='html: DisplayTotalrenewalFee'])[1]

(//div[@class='ctrl-column']/span[@data-bind='html: DisplayTotalrenewalFee'])[2]

分别为第一个和第二个值。

答案 1 :(得分:1)

您可以使用所需元素的内部文本找到该范围。

By.xpath("//div[text()='Your Renewal Charges']/following-sibling::div//span[contains(@data-bind,'DisplayTotalrenewalFee')]")

By.xpath("//div[text()='Amount Sent']/following-sibling::div//span[contains(@data-bind,'DisplayTotalrenewalFee')]")

了解有关xpath及其功能refer this的更多信息。

答案 2 :(得分:1)

您可以尝试制作一个列表,然后迭代它。

List<String> elements = driver.findElements(By.xpath("//span[@data-bind='html: DisplayTotalrenewalFee']"));
for (WebElement element : elements)
{
    String usd = element.getText().split(" ")[0];
    String value = element.getText().split(" ")[1];
}

显然可以根据您对这些值的处理方式进行改进。