Selenium:用于从弹出窗口iframe获取元素的Python Webdriver未找到元素

g52tjvyc  于 2023-01-13  发布在  Python
关注(0)|答案(2)|浏览(138)

在URL的情况下
https://console.us-ashburn-1.oraclecloud.com/
在弹出窗口接受cookie时,我尝试单击button元素以允许/拒绝cookie

//div[@class="pdynamicbutton"]//a[@class="call"]

但却看不见。
当我使用

switch_to.frame('trustarcNoticeFrame')

它仍然找不到它。
不知道我如何才能在这些按钮登录。

dced5bon

dced5bon1#

问题是这个switch_to.frame('trustarcNoticeFrame')没有切换到iframe,iframe有cookie管理器对话框,下面是适合我的代码片段。

btnYes = "//div[@class='pdynamicbutton']/a[@class='call']"
iframe = "//iframe[@title='TrustArc Cookie Consent Manager']"

ifr = driver.find_element(By.XPATH, iframe)
driver.switch_to.frame(ifr)

eleYes= driver.find_element(By.XPATH, btnYes)
eleYes.click()
xsuvu9jc

xsuvu9jc2#

使用WebDriverWait并等待帧可用,然后切换。

WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe.truste_popframe")))
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//a[text()='Accept all']"))).click()

您需要等待以下库。

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

相关问题