Как мне использовать Selenium для щелчка по третьему классу div «link», если все они имеют один и тот же класс div?

#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()
 

Ссылка:

Ссылка на селектор CSS

CSS: селектор nth-child()

Ответ №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)")