Как нажать на эту кнопку, используя Selenium через Python - PullRequest
1 голос
/ 10 июня 2019

Я не могу нажать на кнопку на веб-странице, используя селен. Кто-нибудь знает, как я могу щелкнуть по нему, я перепробовал каждый метод, который смог придумать, и не могу заставить его работать.

Я пробовал XPATH, идентификаторы, искал текст на кнопке, я пытался скопировать код от других людей.

Это кнопка, которую я хочу нажать:

<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 голосов
/ 10 июня 2019

Кажется, ты был довольно близко.Для click() на желаемом элементе вы должны вызвать WebDriverWait для element_to_be_clickable(), и вы можете использовать любое из следующих решений:

  • Использование 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
    
...