Selenium xPath - поиск элемента по частичному тексту

У меня есть следующий 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, чтобы найти <span class="human-readable"></span> первого блока кода HTML.

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

Но когда я запускаю указанный выше xpath, он дает мне 2 совпадающих узла, что мне ясно из кода HTML. Есть небольшая разница в параметре href тега 'a'. Первый блок кода содержит «SP.POP.TOTL», а второй блок содержит «NY.GDP.MKTP.CD».

Есть ли способ получить доступ к частичному тексту параметра href тега 'a' и использовать его в моем xpath, чтобы различать 2 блока?

Примечание. Я не могу использовать следующий xpath: //a[@href='http://data.worldbank.org/indicator/SP.POP.TOTL/countries/SC?display=graph']/span, потому что я запускаю цикл for в 40 разных странах и каждый раз, когда текст после '/ countries /', «SC», изменяется. Поэтому мне приходится использовать частичный текст, независимо от префикса страны.


person Uziii    schedule 19.05.2016    source источник
comment
Я просто нахожусь в своем компьютере ... и работаю над вчерашним вопросом ... надеюсь, ты скоро его получишь   -  person noor    schedule 19.05.2016
comment
// div [@ class = 'views-field-wbapi-data-value-2014 wbapi-data-value wbapi-data-value-first'] / span / span / a / span [0] // div [@class = 'view-field-wbapi-data-value-2014 wbapi-data-value wbapi-data-value-first'] / span / span / a / span [1]   -  person Kishan Patel    schedule 19.05.2016


Ответы (2)


используйте это как cssSelector:

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

используйте это в коде, как показано ниже:

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

Вы пробовали использовать функцию contains? Вы можете попробовать добавить следующее.

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