Найдите элемент reCAPTCHA и щелкните по нему - Python + Selenium - PullRequest
0 голосов
/ 24 декабря 2018

Мне нужна помощь.URL-адрес: https://www.inipec.gov.it/cerca-pec/-/pecs/companies. Мне нужно установить флажок Капча: enter image description here

Мой код выглядит так:

import os, urllib.request, requests, datetime, time, random, ssl, json, codecs, csv, urllib
from urllib.request import Request, urlopen
from urllib.request import urlretrieve
from datetime import datetime
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoAlertPresentException
from selenium.webdriver.chrome.options import Options

chromedriver = "chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(executable_path=chromedriver, chrome_options=chrome_options)
driver.get("https://www.inipec.gov.it/cerca-pec/-/pecs/companies")
driver.switch_to_default_content()
element = driver.find_elements_by_css_selector('iframe')[1]
driver.switch_to_frame(element)

driver.find_elements_by_xpath('//*[@id="recaptcha-anchor"]/div[1]').click()

Во время выполнения, есть ошибка:

driver.find_elements_by_xpath ('// * [@ id = "recaptcha-anchor"] / div 1 '). click () AttributeError:У объекта 'list' нет атрибута 'click'

Пожалуйста, помогите исправить это.

1 Ответ

0 голосов
/ 24 декабря 2018

Внутри URL https://www.inipec.gov.it/cerca-pec/-/pecs/companies для вызова click() на флажке reCAPTCHA вам необходимо:

  • Индуцировать WebDriverWait для требуемого фрейм должен быть доступен и переключиться на него .
  • Индуцировать WebDriverWait для желаемого элемента, который будет кликабельным .
  • Вы можете использовать следующее решение:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait 
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.chrome.options import Options
    
    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    options.add_argument('disable-infobars')
    driver = webdriver.Chrome(executable_path=r'C:\WebDrivers\chromedriver.exe', chrome_options=options)
    driver.get("https://www.inipec.gov.it/cerca-pec/-/pecs/companies")
    WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[name^='a-'][src^='https://www.google.com/recaptcha/api2/anchor?']")))
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//span[@class='recaptcha-checkbox goog-inline-block recaptcha-checkbox-unchecked rc-anchor-checkbox']/div[@class='recaptcha-checkbox-checkmark']"))).click()
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...