Как получить доступ к ссылке, выполнив поиск по ее тексту в Selenium WebDriver?

1

У меня есть иерархия файлов HTML в древовидной структуре на веб-странице, как показано на рисунке.

Изображение 174551

Код HTML - это

<div class="rtMid rtSelected">
    < span class="rtSp"/>
    < img class="rtImg" alt="Automation" src="http://192.168.1.6/eprint_prod_3.8/images/StoreImages/close_folder.png"/>
    < span class="rtIn" title="Automation">Automation (1)</span>
</div>

В Selenium WebDriver есть способ щелкнуть по ссылке Automation (1), ища только текст, который я не хочу использовать по причине XPath, это местоположение будет меняться, поэтому есть способ найти его по его тексту и нажать на Это.

Теги:
xpath
selenium
selenium-webdriver
webdriver

3 ответа

2
Лучший ответ

XPath является мощным, вы считаете его ненадежным, вы не используете его правильно. Проведите некоторое время в учебном пособии XPath.

Это простое решение вашего вопроса, но может быть много другого, о чем вам нужно подумать. Например, соответствие названия и текста и т.д.

driver.findElement(By.xpath(".//span[text()='Automation (1)']")).click();

Селектор CSS также мощный и быстрый, более читаемый, чем XPath. Но в вашем случае он не поддерживает поиск по тексту.

  • 0
    Можете ли вы предложить код, который я пробовал driver.findElement (By.partialLinkText ("Автоматизация")). click ();
  • 0
    @ Santhosh.S: убедитесь, что это соответствует только одному элементу. Если есть другие элементы с таким же текстом, вам нужно предоставить больше HTML. Ответ выше обеспечивает точное совпадение.
Показать ещё 1 комментарий
0

2 подхода

Подход 1:

По названию класса:

Здесь у нас есть имя класса для автоматизации текста (1), которое является rtIn. Выполните driver.findElement(By.className("rtIn")). Click();

Подход 2:

Селектором CSS родительского имени и класса

Селектор CSS родителя:.rtSelected

WebElement element1 = driver.findElement(By.cssSelector(". RtSelected")) element1.className("rtIn"). Click();

Подход 3:

Прямым селектором CSS: 1..rtIn 2..rtSelected>.rtIn

Лучше использовать второй CSS-селектор

driver.findElement(By.cssSelector(". rtSelected>.rtIn")). click();

0

поиск по названию работал хорошо

driver.findElement(By.xpath("//span[contains(@title,'Automation')]")).click();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню