Mst*_*e12 2 python iframe selenium recaptcha webdriverwait
我想,点击按钮通过音频解析验证码,但是selenium没有检测到指定的“id”。
browser.get("https://www.google.com/recaptcha/api2/demo")
mainWin = browser.current_window_handle
iframe = browser.find_elements_by_tag_name("iframe")[0]
browser.switch_to_frame(iframe)
CheckBox = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID ,"recaptcha-anchor"))).click()
sleep(4)
audio = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID ,"recaptcha-audio-button"))).click()
Run Code Online (Sandbox Code Playgroud)
当click()所需的元素位于某个元素内时,单击该按钮可通过音频解析验证码<iframe>因此您必须:
诱导WebDriver等待所需的框架可用并切换到它。
\n诱导WebDriverWait等待所需元素可点击。
\n您可以使用以下定位策略:
\n代码块:
\nfrom selenium import webdriver\nfrom selenium.webdriver.support.ui import WebDriverWait\nfrom selenium.webdriver.common.by import By\nfrom selenium.webdriver.support import expected_conditions as EC\n\noptions = webdriver.ChromeOptions() \noptions.add_argument("start-maximized")\noptions.add_experimental_option("excludeSwitches", ["enable-automation"])\noptions.add_experimental_option(\'useAutomationExtension\', False)\ndriver = webdriver.Chrome(options=options, executable_path=r\'C:\\WebDrivers\\chromedriver.exe\')\ndriver.get("https://www.google.com/recaptcha/api2/demo")\nWebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[src^=\'https://www.google.com/recaptcha/api2/anchor\']")))\nWebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "span#recaptcha-anchor"))).click()\ndriver.switch_to.default_content()\nWebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[title=\'recaptcha challenge\']")))\nWebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button#recaptcha-audio-button"))).click()\nRun Code Online (Sandbox Code Playgroud)\n浏览器快照:
\n您可以在以下位置找到一些相关讨论:
\n| 归档时间: |
|
| 查看次数: |
9111 次 |
| 最近记录: |