无法使用Python Selenium在iframe中找到cookie接受窗口

2024-06-28 23:43:38 发布

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

我试图在使用Python中的Selenium的iframe中使用https://asunnot.oikotie.fi/myytavat-asunnot,但似乎找不到cookie弹出窗口的接受按钮

以下是我构建的代码:

url = 'https://asunnot.oikotie.fi/myytavat-asunnot'
driver = webdriver.Safari()
driver.get(url)
driver.implicitly_wait(10)
button = driver.find_elements_by_class_name("button")
for ind, b in enumerate(button):
    print(ind, b.text.strip())
button[53].click()

图片: enter image description here

但我收到以下错误消息:

selenium.common.exceptions.ElementNotInteractableException: Message: 

当我检查驱动程序中的元素时,它似乎在后台包含页面,而不是cookie弹出窗口。我也试过,如果它是一个^{,但似乎不是

有什么想法可以继续吗


Tags: 代码httpsurlcookiedriverseleniumbutton按钮
1条回答
网友
1楼 · 发布于 2024-06-28 23:43:38

cookie接受的元素OK位于<iframe>内,因此您必须:

  • 诱导WebDriverWait使所需的帧可用,并切换到它

  • 诱导WebDriverWait使所需的元素可单击

  • 您可以使用以下任一Locator Strategies

    • 使用CSS_SELECTOR

      driver.get("https://asunnot.oikotie.fi/myytavat-asunnot")
      WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[src^='https://cdn.privacy-mgmt.com/index']")))
      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[aria-label='OK']"))).click()
      
    • 使用XPATH

      driver.get("https://asunnot.oikotie.fi/myytavat-asunnot")
      WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[starts-with(@src, 'https://cdn.privacy-mgmt.com/index')]")))
      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@aria-label='OK']"))).click()
      
  • 注意:您必须添加以下导入:

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

参考文献

您可以在以下内容中找到一些相关讨论:

相关问题 更多 >