找到reCAPTCHA元素并单击它— Python + Selenium

我需要一些帮助。有URL:https : //www.inipec.gov.it/cercapec/-/pecs/companies。我需要单击复选框验证码:在此处输入图片说明

我的代码如下所示:

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()

During the execution, there is an error:

driver.find_elements_by_xpath(‘//*[@id=”recaptcha-

anchor”]/div1’).click()

AttributeError: ‘list’ object has no attribute ‘click’

Please, help to fix it.

回答:

回答:

使用以下二进制文件集:

  • Selenium v3.141.0
  • ChromeDriver v80.0
  • Chrome Version 80.0

您可以使用以下更新的代码块作为解决方案:

from selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.common.by import By

from selenium.webdriver.support import expected_conditions as EC

options = webdriver.ChromeOptions()

options.add_argument("start-maximized")

options.add_experimental_option("excludeSwitches", ["enable-automation"])

options.add_experimental_option('useAutomationExtension', False)

driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')

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[@id='recaptcha-anchor']"))).click()


回答:

在https://www.inipec.gov.it/cerca-pec/-/pecs/companies要在reCAPTCHA复选框上

调用的URL中,您需要:click()

诱导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()

以上是 找到reCAPTCHA元素并单击它— Python + Selenium 的全部内容, 来源链接: utcz.com/qa/423840.html

回到顶部