【问题标题】:How to click this button using Selenium through Python如何通过 Python 使用 Selenium 单击此按钮
【发布时间】:2019-06-10 01:50:10
【问题描述】:

我无法使用 selenium 单击网页上的按钮。有谁知道我如何点击它,我已经尝试了我能想到的每一种方法,但我无法让它发挥作用。

我尝试过 XPATH、ID、搜索按钮上的文本、我尝试过从其他人那里复制粘贴代码。

这是我要按下的按钮:

<div id="sbWatchHeaderNext">
          <a href="https://pf.entertainow.com//f/p/enter?plid=5ad013747591fd8f488b4568$152501860$sO**ocW2WJU3*d1YTbuBew&amp;euid=59cad72c28db997a4cfe4ee3$152501860$GbU3GsQ8lz0CwYCEDtNCTw&amp;kc=1&amp;rock=%7B%22fid%22%3A%225b60c7087591fdf6268b4567%22%2C%22puid%22%3A%2239511142%22%7D&amp;paper=bE43FLvdUsdYyz6w3CV7mYJkahm-ZuXLedpu2XSnAc1nOB-mCRb-ZPN6ppyszpEm-rxaZmMf6bYoMWs90vR61e5vZOucr-eF6yd-N-aovwGtEdRz9ZYnYs4h2Ior_ZB5p4TP_NLGh_SDgSXfSTNY6YaOr2oUJ7jRvRN9Kw_tQ0_wDz0AshpZi4EskNE2lzBoQxX3yELRdF5QIR4_pS0hW3CT1-x5ls_BNfa9N5rAPNL91pDlh3D2IfhXNPSwt3p4ffhkL9OPiMU&amp;urrMet=null&amp;encl=528769679">Next</a>
      </div>

这是我目前无法使用的代码:

WebDriverWait(driver, 3).until(EC.presence_of_element_located((By.XPATH, "//button[contains(text(),'Continue Watching')]")))

driver.find_element_by_xpath("//button[contains(text(),'Next')]").click()

如果你有什么我应该尝试的建议,请告诉我:)

使用某些方法,我会在控制台中绝对没有错误,但网页上不会发生任何事情,而使用其他方法,我会得到“消息:没有这样的元素:无法找到元素:...”以及类似的东西在我的控制台。

【问题讨论】:

  • 按钮变成了真正的按钮哈哈,对不起,我是新来的,如果你检查元素,你可以看到代码
  • 另外我已经确保我的代码被标签到正确的页面,我绝对可以在同一页面上弄乱其他按钮
  • 能否请您发布按钮的html。
  • 是的,很抱歉,由于某种原因,html 只是让它显示为“按钮”,我不确定如何发布 HTML,但如果您右键单击并检查元素,蓝色文本显示“下一步”,您可以查看按钮的确切 HTML。对不起,我是新来的,哈哈

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

看来你已经很接近了。要在所需元素上 click(),您必须为 element_to_be_clickable() 诱导 WebDriverWait,您可以使用以下任一解决方案:

  • 使用LINK_TEXT

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Next"))).click()
    
  • 使用CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div#sbWatchHeaderNext>a[href^='https://pf.entertainow.com//f/p/enter?plid']"))).click()
    
  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@id='sbWatchHeaderNext']/a[starts-with(@href, 'https://pf.entertainow.com//f/p/enter?plid') and text()='Next']"))).click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

【讨论】:

  • 知道了,对不起,我是新来的 :)
猜你喜欢
  • 2019-06-10
  • 1970-01-01
  • 2019-12-14
  • 1970-01-01
  • 1970-01-01
  • 2019-09-01
  • 2020-02-24
  • 2021-05-04
  • 2020-11-15
相关资源
最近更新 更多