如何告诉谷歌我接受cookies python

2024-09-29 17:13:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试接受cookies并在谷歌中搜索。但我面临着一个我以前从未面对过的问题。 Webdriver找不到接受cookies按钮元素。我什么都看了我试图查看是否有什么东西改变了xpath(是否有什么东西触发了任何其他元素,这样xpath就会改变),但我手里没有。我尝试使用accept.send_keys(Keys.RETURN)accept.click()。似乎什么都不管用。 我现在所拥有的

def GoogleIt():
path = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(path)
driver.get("https://google.com")
wait(5)
accept = driver.find_element_by_xpath("/html/body/div/c-wiz/div[2]/div/div/div/div/div[2]/form/div/div[2]")
accept.send_keys(Keys.RETURN)
accept.click()
search = driver.find_element_by_xpath("/html/body/div/div[2]/form/div[2]/div[1]/div[1]/div/div[2]/input")
search.click()
search.send_keys(talk)

注意:wait()是一个不同的时间名称

错误

Traceback (most recent call last):
  File "C:\Users\Teknoloji\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 1883, in __call__
    return self.func(*args)
  File "C:/Users/Teknoloji/Desktop/Phyton/Assistant V1/Assistant.py", line 20, in GoogleIt
    accept = driver.find_element_by_xpath("/html/body/div/c-wiz/div[2]/div/div/div/div/div[2]/form/div/div[2]")
  File "C:\Users\Teknoloji\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 394, in find_element_by_xpath
    return self.find_element(by=By.XPATH, value=xpath)
  File "C:\Users\Teknoloji\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 976, in find_element
    return self.execute(Command.FIND_ELEMENT, {
  File "C:\Users\Teknoloji\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\Teknoloji\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div/c-wiz/div[2]/div/div/div/div/div[2]/form/div/div[2]"}
  (Session info: chrome=85.0.4183.121)


Process finished with exit code -1

如果你需要更多的信息,我在这里。 谢谢…


Tags: inpydivbydriverlineelementfind
2条回答

要单击accept cookies按钮,您需要首先切换到iframe

诱导WebDriverWait()frame_to_be_available_and_switch_to_it()并遵循css选择器。 诱导WebDriverWait()element_to_be_clickable()并跟随xpath

WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[src^='https://consent.google.com']")))
    WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//div[@id='introAgreeButton']"))).click() 

您需要导入以下库

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

如果KunduK的解决方案不适用于某些阅读本文的人,请在frame_to_be_available_and_switch_to_it()方法中使用“By.ID”参数而不是“By.CSS_选择器”——

WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.ID, "name_of_the_iframe")))

相关问题 更多 >

    热门问题