gpt4 book ai didi

python - 在 Selenium 中不再处于 DOM 中后切换回父框架

转载 作者:行者123 更新时间:2023-11-30 22:12:13 24 4
gpt4 key购买 nike

我有以下页面

<body>
<iframe id="outer_frame">
<iframe id="search_button_frame">
<button id="search_button"></button>
</iframe>
</iframe>
</body>

现在,在我点击 search_button 后,两个 frames external_framesearch_button_frame 不再在 DOM 中,而是页面变成这样

<body>
<iframe id="form_frame">
...
</iframe>
</body>

我试图转到search_button,然后离开框架进入主页,然后使用以下命令切换到form_frame:

outer_frame = browser.find_element_by_xpath('//*[@id="outer_frame"]')
browser.switch_to.frame(outer_frame)

search_button_frame = browser.find_element_by_xpath('//*[@id="search_button_frame"]')
browser.switch_to.frame(search_button_frame)

search_button = browser.find_element_by_xpath('//*[@id="search_button"]')
search_button.click()

browser.switch_to_default_content()

form_frame = browser.find_element_by_xpath('//*[@id="form_frame"]')
browser.switch_to.frame(form_frame)

但我不断收到以下错误:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Una
ble to locate element: {"method":"xpath","selector":"//*[@id="form_frame"]"}

这是否意味着我没有位于正确的框架中?

最佳答案

根据您的问题和 DOM Tree结构帖子点击search_button您需要切换default_content()首先,然后切换到下一个所需的 <iframe>使用WebDriverWait如下:

driver.switch_to.default_content()
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"form_frame")))

您可以在以下位置找到详细讨论:

关于python - 在 Selenium 中不再处于 DOM 中后切换回父框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51175323/

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