Написание тестов с помощью веб-драйвера Selenium в C#. Я абсолютно не могу понять, почему только первый в списке элементов div (одного уровня) может быть идентифицирован с помощью xPath. У меня есть html, я проверил два элемента на странице, два разных элемента. Мне удалось скопировать только текст первого элемента, запустив этот простой код:
IWebElement chapterElement = webDriver.FindElement(By.XPath("/html/body/div[3]/main/div[2]/div[3]/article/div[1]"));
... после чего я могу просто набрать: chapterElement.Text
, чтобы узнать внутренний текст.
А другой - это другой div, на том же уровне, что и первый, xPath, который я только что скопировал из HTML (копировать весь xPath):
IWebElement chapterElement = webDriver.FindElement(By.XPath("/html/body/div[3]/main/div[2]/div[3]/article/div[2]"));
... и это не не получается, но текст также не копируется, текст "" (пустая строка).
Единственными различиями между двумя div являются:
последний сегмент в пути: div [1] и div [2].
второй div на самом деле скрыт от страницы (возможно, потому что ему не хватает класса "chapter_visible"), но он полностью отображается в html с Inspect!
Если это поможет, я скажу, что
"/html/body/div[3]/main/div[2]/div[3]/article/div[1]"
соответствует:
<div class="chapter chapter chapter_visible" data-chapterno="0" data-chapterid="5e8798266cee070006f5a3d1" style="display: block;">
<h1>some text</h1>
<div class="chapter__content"><p>some text</p>
<p>some text</p>
<p>some text</p>
<ul>
<li>some text</li>
<li>some text</li>
<li>some text.</li>
</ul></div>
</div>
и "/html/body/div[3]/main/div[2]/div[3]/article/div[2]"
(второй xPath) соответствует следующее (как на том же уровне, что и первый):
<div class="chapter chapter" data-chapterno="1" data-chapterid="5e8798436cee070006f5a3d2">
<h1>some text</h1>
<div class="chapter__content"><p>some text</p>
<p><strong>some text</strong></p>
<p>some text.</p>
<p>some text</p>
<p>some text</p></div>
</div>
Это мой первый опыт игры с xPath, немного разочарованный, потому что я просто скопировал xPath, я даже не писал это вручную. Это должно было быть быстрым и простым, верно? Спасибо.