Нажмите на ссылку Javascript, используя Selenium Python - PullRequest
0 голосов
/ 13 марта 2019

Мне нужно нажать на кнопку «Visualizar cruzeiros» на этом сайте: https://www.disneytravelcenter.com/MIN-000000000031063/sites++disney-cruise-line++cruises-destinations++alaska++view-sailings++view-sailings/

К сожалению, я не могу сделать это, просто используя:

visualizar = driver.find_element_by_css_selector('#jb-card-txt-blk-redirect-link-zone-' + zona + 'night-' + str(c)+ '.redirectLink') visualizar.click()

Или используя:

visualizar= driver.find_element_by_class_name('redirectLink')
visualizar.click()

Или используя:

visualizar= driver.find_element_by_xpath('//*[@id="jb-card-txt-blk-redirect-link-zone-' + zona + 'night-' + str(c) +'"]')
visualizar.click()

Как мне тогда нажать на эту кнопку?

OBS: zona и str (c) являются переменными цикла, но на самом деле они не меняют результат кода.

Ответы [ 3 ]

1 голос
/ 13 марта 2019

Вы пробовали использовать xpath //a[contains(text(),'Visualizar cruzeiros')?Это должно вернуть более одного элемента, вам нужно получить второй.
Попробуйте написать тестовый пример с IDE Селен, это может дать вам подсказку, как получить доступ к элементу.

0 голосов
/ 14 марта 2019

Узнал ответ на мою проблему:

button = driver.find_elements_by_xpath('//*[@id="jb-card-txt-blk-redirect-link-zone-' + zona + 'night-' + str(c) + '"]')[2]
button.click()
0 голосов
/ 13 марта 2019

В selenium ide ++ этот код работает:

{
  "Name": "Untitled",
  "CreationDate": "2019-3-13",
  "Commands": [
    {
      "Command": "open",
      "Target": "https://www.disneytravelcenter.com/MIN-000000000031063/sites++disney-cruise-line++cruises-destinations++alaska++view-sailings++view-sailings/",
      "Value": ""
    },
    {
      "Command": "click",
      "Target": "link=Visualizar cruzeiros@POS=4",
      "Value": ""
    }
  ]
}

Этот код можно вставить на вкладку исходного кода .

link=Visualizar cruzeiros@POS=4 показывает, что для этого слова вам нужно 4-е совпадение .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...