#python #selenium-webdriver #xpath #selenium-chromedriver
#python #selenium-webdriver #xpath #selenium-chromedriver
Вопрос:
Я новичок в Python и нуждаюсь в некоторой помощи.
Я использую Python Selenium — Chrome для извлечения данных, и мне нужен мой скрипт на Python, чтобы иметь возможность переключаться между параметрами, которые отображаются в виде вкладок на веб-странице.
Пробовал несколько способов заставить браузер определить и щелкнуть вкладку, на которую мне нужно переключиться, но этого просто не происходит, и отображается ошибка для поля, которое я хочу заполнить на этой вкладке:
<div id="tabbed-nav">
<ul>
<li><a>Diary Number</a></li>
<li><a>Case Number</a></li>
<li><a>Party Name</a></li>
<li><a>AOR</a></li>
<li><a>Court / Tribunal</a></li>
Дефекты подачи ->
<li><a>Free Text</a></li>
</ul>
<div>
Вот два способа, которыми я пытался заставить скрипт щелкнуть вкладку, которая по какой-то причине не работает
Object.find_element_by_xpath("//*[@id='tabbed-nav']/ul[1]/li[3]").click()
Object.find_element_by_xpath("//div[@id='tabbed-nav']/ul/li/a[.="Party Name"]').click()
Ответ №1:
Прежде чем мы проанализируем ваши две попытки, позвольте мне вставить текущее (упрощенное) DOM-дерево рассматриваемой страницы для дальнейшего использования:
<div id="tabbed-nav">
<ul class="z-tabs-nav z-tabs-mobile">
<li><a><span class="z-title">Diary Number</span><span class="z-arrow"></span></a></li>
</ul>
<i class="z-dropdown-arrow"></i>
<ul class="z-tabs-nav z-tabs-desktop">
<li class="z-tab z-first z-active" data-link="tab1"><a class="z-link">Diary Number</a></li>
<li class="z-tab" data-link="tab2"><a class="z-link">Case Number</a></li>
<li class="z-tab" data-link="tab3"><a class="z-link">Party Name</a></li>
<li class="z-tab" data-link="tab4"><a class="z-link">AOR</a></li>
<li class="z-tab" data-link="tab5"><a class="z-link">Court / Tribunal</a></li>
<li class="z-tab z-last" data-link="tab6"><a class="z-link">Free Text</a></li>
</ul>
<div class="z-container">
<!-- skipped -->
</div>
</div>
А теперь анализ ваших двух попыток:
Попытка № 1
Object.find_element_by_xpath("//*[@id='tabbed-nav']/ul[1]/li[3]").click()
В вашем есть два ul
тега //*[@id='tabbed-nav']
— первый для мобильной версии страницы, а второй для настольной версии страницы.
Вы выбираете первый ( /ul[1]
), который содержит только один <li>
тег, в то время как вы запрашиваете 3-й. Вот почему элемент не найден.
Попытка № 2
Object.find_element_by_xpath("//div[@id='tabbed-nav']/ul/li/a[.="Party Name"]').click()
Это почти правильно! В "
and просто беспорядок '
. Далее следует правильная строка с xpath:
Object.find_element_by_xpath("//div[@id='tabbed-nav']/ul/li/a[.='Party Name']").click()
Это хорошо работает для текущей структуры DOM.
Комментарии:
1. Второй вариант сработал, ценю вашу помощь. Спасибо.
2. @Kunal Вы можете принять один ответ (если это вам поможет), нажав на большую серую кнопку проверки с левой стороны. При желании вы можете добавить 10 баллов любому автору любого хорошего ответа, щелкнув верхний серый треугольник