我有以下网页的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”之后的文本都会发生变化。所以我必须使用部分文本,独立于国家/地区前缀。
答案 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