#html #python-3.x #selenium #click
#HTML #python-3.x #Селен #нажмите
Вопрос:
Я использую selenium с python. Весь HTML использует один и тот же класс div «ссылки». Всего на странице семь ссылок, каждая с одним и тем же классом и частью одного и того же имени. Мне было интересно, как щелкнуть по веб-элементу, если у них одинаковое имя <div class»link»>
Selenium с Python с использованием Chrome webdriver.
<div class="aux">
<div class="links">
<a class="view" href="/pmc/articles/PMC1403861/">Summary</a>
<a class="view" href="/pmc/articles/PMC1403861/?report=classicamp;amp;page=1">Page Browse</a>
<a class="view" href="/pmc/articles/PMC1403861/pdf/jeabehav00206-0003.pdf">PDF–1.6M</a>
<a class="view citationexporter" href="#" data-citationid="PMC1403861" role="button" aria-expanded="false" aria-haspopup="true">Citation</a>
</div>
</div>
Ответ №1:
Попробуйте использовать приведенный ниже синтаксис —
Python:
driver.find_element_by_xpath("//div[@class = 'links']/a[3]")).click();
Java:
driver.findElement(By.xpath("//div[@class = 'links']/a[3]")).click();
Ответ №2:
Вы можете использовать селектор css, как показано ниже:
.find_element_by_css_selector('div.links a[href*="pdf"]').click()
Или, если вы хотите использовать последовательность:
.find_element_by_css_selector('div.links a:nth-child(3)').click()
Ссылка:
Ответ №3:
Вы можете использовать XPath с индексацией элемента.
Например:
//div[@class=’links’]/a[3]
или
//div[@class=’links’]//следующий::a[3]
Для получения более подробной информации см. URL ниже:
https://www.guru99.com/using-contains-sbiling-ancestor-to-find-element-in-selenium.html
Ответ №4:
Чтобы найти 3-й класс со ссылками на имена классов.
elem=driver.find_elements_by_xpath("//div[@class='links']")[3]
elem=driver.find_element_by_css_selector("div.links:nth-child(3)")