gpt4 book ai didi

Python Selenium 单击 google "I agree"按钮

转载 作者:行者123 更新时间:2023-12-04 08:25:24 24 4
gpt4 key购买 nike

我试图抓取一些谷歌数据,但我首先想点击谷歌弹出的“我同意”按钮。这是我用来执行此操作的脚本:

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

search_question = input("Ask a question: ")

driver = webdriver.Chrome("*Your Webdriver location*")
driver.wait = WebDriverWait(driver, 5)

driver.get("https://google.com")

time.sleep(1)
agree = driver.wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="introAgreeButton"]/span/span')))
agree.click()
# time.sleep(0.2)

search = driver.find_element_by_class_name("gLFyf")
search.send_keys(search_question)
search.send_keys(Keys.ENTER)
问题是 selenium 似乎没有找到按钮,因此我收到超时错误。 (我也尝试过 find_element_by_xpath ,但仍然无法正常工作)。

最佳答案

如果您在 devtools 检查器中向上滚动,您会注意到您的元素位于 iframe 中:
iframe in devtools
您需要先切换到该框架,单击按钮然后切换回默认内容(主页)


driver.get("https://google.com")

#active the iframe and click the agree button
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, "//iframe")))
agree = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="introAgreeButton"]/span/span')))
agree.click()

#back to the main page
driver.switch_to_default_content()
这对我行得通。
仅供引用 - 页面上只有 1 个 iframe,这就是 xpath //iframe 的原因作品。如果有多个,您需要以更高的准确度识别它。

关于Python Selenium 单击 google "I agree"按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65286557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com