Нужна помощь для извлечения текста между <p class = 'otp'> 23454 </p> - PullRequest
0 голосов
/ 12 января 2019

Хорошо, на моей странице временного почтового ящика amazon отправил электронное письмо, а в источнике страницы из элемента inspect есть следующее:

<p class='otp'>23454</p>

Я пытался

String codess = driver.FindElement(By.ClassName("otp")).Text;

но он говорит, что otp не является допустимым классом / не может быть найден. Это p является 4-м р во всем исходном коде. Я хотел бы присвоить значение между, которое в данном случае равно 23454, переменной, которая может быть названа как угодно предпочтительно «кодом». Номер будет меняться каждый раз. Спасибо!

1 Ответ

0 голосов
/ 12 января 2019

Если вы на 100% уверены, что html будет таким, и что нет другого p, подобного тому, который следует пропустить, вы можете использовать регулярное выражение, подобное этому:

<p class='otp'>(\d*)<\/p>

Это даст вам содержимое, если оно будет просто цифрой или пустым. Вам нужно будет получить вторую группу из матча (первая - это весь матч, включая окружающий html).

Пример:

string html = "<p class='otp'>23454</p>";
var results = Regex.Match(html, "<p class='otp'>(\\d*)<\\/p>"); // Note you need to escape the \ from the regex
string value = null;
if (results.Success && results.Groups.Count == 2)
    value = results.Groups[1].Value; // This will assign 23454

Если html может быть другим, с большим количеством атрибутов, вам может понадобиться использовать html-анализатор, например HtmlDocument.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...