2015-05-21 4 views
3

У меня возникли проблемы с получением моей конкретной строки из упорядоченного списка. Я использую C# и Visual Studio для поиска веб-сайта для конкретной строки, а затем импортирования в лист Excel. В частности, это значение должно быть датой рождения. Мой текущий запрос строки выглядит следующим образом:XPath для получения текста с помощью элемента sibling HTML

driver.FindElement(By.XPath("//*[contains(text(), 'Birthdate')]")).Text; 

Упорядоченный список, который я ищу через выглядит следующим образом:

<ol>     
    <li> 
     <label>Name</label>Humphries, Ryan</li> 
    <li> 
     <label>Birthdate</label>11/14/1992</li> 
    <li> 
     <label>SSN</label> 

я могу найти «Дата рождения», и я получаю эту строку, чтобы вернуться к моему документу с моим текущим кодом, однако, я хочу фактическую дату рождения, а не ярлык.

ответ

3

Проблема заключается в том, что вы не можете найти/обратиться к текстовому узлу с селеном напрямую. Общим способом решения этой проблемы является получение текста родительского элемента и вычитание из него текста дочернего элемента.

Другими словами, найти li элемент, получить текст и заменить Birthdate с пустой строкой:

driver.FindElement(By.XPath("//li[label = 'Birthdate']")).Text.Replace("Birthdate", "") 
+2

Хорошее решение alecxe – Saifur

+0

Спасибо за столь быстрый ответ! В частности, мой код выглядит следующим образом: 'activesheet.Range [" B "+ n] .Value = driver.FindElement (By.XPath (" // li [label = 'Birthdate] ")). Text.Replace («Дата рождения», «»); ' Ваше решение действительно помогает, но область на моем листе Excel остается пустым. Я немного озадачен тем, почему. Какие-либо предложения? Спасибо! Приносим извинения за форматирование, я новичок на сайте. – Rinktacular

+0

@Rinktacular спасибо, можете ли вы распечатать результат 'driver.FindElement (By.XPath (" // li [label = 'Birthdate] ")). Text.Replace (" Дата рождения "," ")' на консоль и посмотреть, что будет стоить? – alecxe

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