Как написать xpath для извлечения даты из текстового узла с помощью Selenium и C# - PullRequest
0 голосов
/ 12 июля 2020
<dd>
::before
<strong>Test Date:</strong>
"
7/6/20 - Monday"
::after
</dd>

приведенный выше образец html.

Я хочу найти дату после «Test Date:» Поскольку на странице будет много дат, я хочу найти дату date со ссылкой на текст «Дата тестирования:» Как мне написать xpath для этого требования? или используя любой другой локатор.

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

Текст 7/6/20 - понедельник находится внутри текстового узла родительского узла <dd>. Итак, чтобы извлечь дату, которая находится сразу после Дата тестирования: , вы можете использовать следующую на основе Стратегию локатора :

IWebElement element = driver.FindElement(By.XPath("//dd[./strong[text()='Test Date:']]"));
string text = (string)((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0].childNodes[3].textContent;", element);

Ссылки

Вы можете найти пару соответствующих обсуждений в:

0 голосов
/ 12 июля 2020

Недостаточно написать xpath (который в вашем случае будет //dd/strong[text()='Test Date:']/following-sibling::text()[1]). Вам нужен отдельный текстовый узел, который Selenium не может рассматривать как веб-элемент. Используйте IJavaScriptExecutor:

IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
string dateText = (string)js.ExecuteScript("return document.evaluate(\"//dd/strong[text()='Test Date:']/following-sibling::text()[1]\", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.cloneNode(true).text;");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...