2014-12-10 3 views
-2

У меня есть следующие XPath:Что такое синтаксис xpath и содержит текст()?

By.xpath(".//div[contains(@class, 'foo123') and contains(text(), 'foo bar')]") 

Я пытаюсь найти следующий HTML:

<div class="foo123">foo bar</div> 

Является ли мой синтаксис неправильно?

+0

Да, синтаксис верен. Если вы не получите ожидаемый результат, сообщите, какой результат вы получаете. – LarsH

+0

Вы имели в виду '.' в начале? Это будет охватывать поиск текущим «родителем», то есть, а не весь документ, который он обычно будет представлять собой текущий элемент. – Arran

+0

В основном я пытаюсь однозначно выбрать элемент. Если я опускаю содержащую текстовую часть и вместо этого делаю что-то вроде этого: driver.findElements (By.xpath (".// div [содержит (@class, 'foo123')]"). Size() возвращает элементов (в этом случае 1). Когда я пишу то же, но использую и содержит текст(), он вернет 0. – Matt

ответ

0

Я понял это - я был смущен, потому что webdriver .getText() и текст xpath() не делают то же самое. В этом примере ДИВ я был на самом деле ищу было похоже на следующее:

<div class="divSelected"> 
    <div class="div1" /> 
    <div class="divwithtext"> text </div> 
    <div class="div3"/> 
</div> 

в WebDriver, если я divSelected.getText() это даст мне «текст». Xpath text() не будет.

+4

Итак, для ваших будущих вопросов, убедитесь, что вы даете достаточно информации на (например, структура 'div', которая представляет вашу фактическую проблему). –

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