Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用webdriver选择正确的i-frame_Python_Selenium_Captcha - Fatal编程技术网

Python 如何使用webdriver选择正确的i-frame

Python 如何使用webdriver选择正确的i-frame,python,selenium,captcha,Python,Selenium,Captcha,给大家。 我有下一个url:“ 我需要webdriver点击验证码上的音频按钮图标。 我可以单击验证码框,但无法访问音频按钮。 这是我的密码: import os, urllib.request, requests, datetime, time, random, ssl, json, codecs, csv, urllib import os.path from urllib.request import Request, urlopen from urllib.request import

给大家。 我有下一个url:“ 我需要webdriver点击验证码上的音频按钮图标。 我可以单击验证码框,但无法访问音频按钮。 这是我的密码:

import os, urllib.request, requests, datetime, time, random, ssl, json, codecs, csv, urllib
import os.path
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
from bs4 import BeautifulSoup
from PIL import Image


proxy = "94.79.52.207:8080" # IP:PORT or HOST:PORT
chromedriver = "chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
options = webdriver.ChromeOptions() 
options.add_argument("start-maximized")
options.add_argument('disable-infobars')
options.add_argument('--proxy-server=%s' % proxy)
os.environ["webdriver.chrome.driver"] = chromedriver
chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(executable_path=chromedriver,       chrome_options=chrome_options)
driver.set_window_size(1050, 740)
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()

driver.switch_to.default_content()
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"#rc-imageselect > div.rc-footer > div.rc-controls > div.primary-controls")))
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="recaptcha-audio-button"]'))).click()

刚刚将iFrame更改为XPath。。。像这样:

WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,'//iframe[@title="recaptcha challenge"]')))

希望这对你有帮助

你在我的回答中尝试过xPath吗?在你的问题中添加相关的HTML。切换框架的完美方法。