Selenium xPath - 通过部分文本定位元素

时间:2016-05-19 07:22:53

标签: java selenium-webdriver pageobjects

我有以下网页的HTML代码。

<div class="views-field-wbapi-data-value-2014 wbapi-data-value wbapi-data-value-first">
    <span class="field-content">
        <span>
            <a href="http://data.worldbank.org/indicator/SP.POP.TOTL/countries/SC?display=graph">
                <span class="human-readable"></span>
            </a>

<div class="views-field-wbapi-data-value-2014 wbapi-data-value wbapi-data-value-first">
    <span class="field-content">
        <span>
            <a href="http://data.worldbank.org/indicator/NY.GDP.MKTP.CD/countries/SC?display=graph">
                <span class="human-readable">91,400</span>
            </a>

我已经提出了以下xpath来找到第一个HTML代码块的<span class="human-readable"></span>

//div[@class='views-field-wbapi-data-value-2014 wbapi-data-value wbapi-data-value-first']/span/span/a/span

但是当我运行上面的xpath时,它给了我2个匹配的节点,HTML代码对我来说很清楚。标签'a'的href参数略有不同。第一个代码块包含“SP.POP.TOTL”,第二个块包含“NY.GDP.MKTP.CD”。

有什么方法可以访问'a'标签的href参数的部分文本,并在我的xpath中使用它来区分2个块?

注意:我无法使用以下xpath: //a[@href='http://data.worldbank.org/indicator/SP.POP.TOTL/countries/SC?display=graph']/span因为我在40个不同的国家/地区运行for循环,每次“/ countries /”,“SC”之后的文本都会发生变化。所以我必须使用部分文本,独立于国家/地区前缀。

2 个答案:

答案 0 :(得分:4)

将其用作cssSelector:

a[href*='SP.POP.TOTL']>span.human-readable

在下面的代码中使用它:

driver.findElement(By.cssSelector("a[href*='SP.POP.TOTL']>span.human-readable"));

答案 1 :(得分:1)

您是否尝试过使用contains功能? 您可以尝试添加以下内容。

/a[contains(@href,'SP.POP.TOTL')]/span