Как я могу нажать на третью ссылку href? - PullRequest
0 голосов
/ 05 декабря 2018
<ul id='pairSublinksLevel1' class='arial_14 bold newBigTabs'>...<ul>
<ul id='pairSublinksLevel2' class='arial_12 newBigTabs'>
   <li>...</li>
   <li>...</li>
   <li>
      <a href='/equities/...'> last data </a>  #<-- HERE
   </li>
   <li>...</li>

Вопрос в том, как я могу получить щелчок по третьему тегу li ??

В моем коде

xpath = "//ul[@id='pairSublinksLevel2']"
element = driver.find_element_by_xpath(xpath)
actions = element.find_element_by_css_selector('a').click()

код работает частично.но я хочу нажать третий тег.Код продолжает нажимать на второй тег.

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

В соответствии с HTML , которым вы поделились, вы можете использовать любое из следующих решений:

  • Использование link_text:

    driver.find_element_by_link_text("last data").click()
    
  • Использование partial_link_text:

    driver.find_element_by_partial_link_text("last data").click()
    
  • Использование css_selector:

    driver.find_element_by_css_selector("ul.newBigTabs#pairSublinksLevel2 a[href*='equities']").click()
    
  • Использование xpath:

    driver.find_element_by_xpath("//ul[@class='arial_12 newBigTabs' and @id='pairSublinksLevel2']//a[contains(@href,'equities') and contains(.,'last data')]").click()
    

Ссылка: Официальные стратегии поиска для веб-драйвера

0 голосов
/ 05 декабря 2018

Попробуйте

driver.find_element_by_xpath("//ul[@id='pairSublinksLevel2']/li[3]/a").click()

РЕДАКТИРОВАТЬ: Спасибо @DebanjanB за предложение:

Когда вы получаете элемент с xpath //ul[@id='pairSublinksLevel2'] и ищите тег a в его дочерних элементах, тогдаон вернет первое совпадение (в вашем случае это может быть внутри второго тега li).Таким образом, вы можете использовать индексирование, как указано выше, для получения конкретного пронумерованного соответствия.Обратите внимание, что такая индексация начинается с 1, а не с 0.

...