#c# #selenium-webdriver #xpath #selenium-chromedriver
#c# #selenium-webdriver #xpath #selenium-chromedriver
Вопрос:
Я видел другие сообщения о получении текстов после тегов br, но ни одно из них не помогло мне получить текст с моей веб-страницы.
Вот фрагмент html, из которого я пытаюсь получить текст:
.....
<div class="col-md6">
<ul`enter code here`>
<p>
<strong>Rates</strong>
<br>
"0.29C/wh 1-Year Fixed"
<br>
"0.39C/wh 2-Year Fixed"
<br>
"0.59C/wh 3-year Fixed"
<br>
</p>
<p>....</p>
</ul>
</div>
Я попробовал следующий XPath, чтобы получить текстовый элемент первого тега br, содержащий 0,29C:
"//*[@id='WebPartWPQ2']/div[1]/div[1]/div[2]/div/div[1]/ul/p[1]/br[1]"
Но, когда я кодирую следующее в C # и Selenium, я получаю нулевой возврат для текста:
var productRateElement = Driver.driver.FindElement(By.XPath("/ [@id='WebPartWPQ2']/div[1]/div[1]/div[2]/div/div[1]/ul/p[1]/br[1]"));
var productRateText = productRateElement.Text;
В браузере Chrome я могу использовать тот же XPath и могу найти текстовый элемент после первого тега br, но в коде C # он возвращает null .
Надеясь получить обратную связь, как решить эту проблему.
Ответ №1:
Вы можете попробовать эти выражения XPath-1.0:
//div/ul/p/strong/following-sibling::br[1]/following-sibling::text()[1]
или со всем путем
//*[@id='WebPartWPQ2']/div[1]/div[1]/div[2]/div/div[1]/ul/p/strong/following-sibling::br[1]/following-sibling::text()[1]
Комментарии:
1. Спасибо за отзыв zx485. Используя весь путь, я получаю следующую ошибку в коде C #: «{«недопустимый селектор: результат выражения xpath «//*[@id= ‘WebPartWPQ2’]/div[1]/ div[1] / div[2]/div / div[1]/ul/p/strong/following-sibling::br[1]/following-sibling::text()[1]» — это: [текст объекта]. Это должен быть элемент.n »
2. ДА. Результатом является
text()
узел, а не элемент. Проблема в том, что (родительский) элемент желаемого содержимого<p>
содержит все текстовые узлы ( и<br>
элементы). Таким образом, вы можете использовать//div/ul/p
для получения элемента, но вам нужно разделить текст в соответствии с вашими требованиями (здесь это, вероятно, будет вторая строка).3. Спасибо, zx485. Вы правы. Нацеливание на последний тег p возвращает все тексты под ним. Я буду работать с этой строкой и попытаюсь ее разделить.