如何通过Python使用Selenium单击此按钮

时间:2019-06-10 01:50:10

标签: python selenium xpath css-selectors webdriverwait

我无法使用硒单击网页上的按钮。有谁知道我如何单击它?我已经尝试过我能想到的每种方法,但我无法使其完全正常工作。

我尝试过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()

如果您有任何建议我应该尝试,请告诉我:)

使用某些方法,我在控制台中绝对不会出错,但是网页上什么也不会发生,而使用其他方法,我会得到“消息:没有这样的元素:无法找到元素:...”,并且在我控制台。

1 个答案:

答案 0 :(得分:0)

您似乎很接近。要在所需元素上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