使用Selenium Python单击Javascript链接

时间:2019-03-13 17:22:52

标签: python selenium web-crawler selenium-chromedriver

我需要点击此网站上的“ 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 个答案:

答案 0 :(得分:1)

您是否尝试过使用xpath //a[contains(text(),'Visualizar cruzeiros')?这应该返回多个元素,您需要获取第二个元素。
尝试使用Selenium IDE编写一个测试用例,它可能会提示您如何访问元素。

答案 1 :(得分:0)

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": ""
    }
  ]
}

您可以将此代码粘贴到source code tab中。

link=Visualizar cruzeiros@POS=4表示您需要的此单词是第4个匹配项

答案 2 :(得分:0)

找出我问题的答案:

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