2016-05-19 6 views
0

У меня есть код HTML моей страницы.Selenium xPath - Элемент размещения с частичным текстом

<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 для разделения двух блоков?

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

+0

я просто в моем компьютере ... и работает на вашем вчера вопрос ... надеюсь, что у получит скоро – noor

+0

// DIV [@ CLASS = "вид-поля wbapi-данных ценностно-2014 wbapi-data-value wbapi-data-value-first ']/span/span/a/span [0] // div [@ class =' ​​views-field-wbapi-data-value-2014 wbapi-data- значение wbapi-data-value-first ']/span/span/a/span [1] –

ответ

4

использовать это как CSSSelector:

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

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

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

Спасибо, это сработало. – Uziii

+0

был бы рад, если бы вы приняли это, нажав на галочку – noor

1

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^