Python Selenium切换到ifram中的iframe

2024-05-14 14:56:36 发布

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

我试图使用Selenium、Python和BS4访问iframe中的iframe

from bs4 import BeautifulSoup
from selenium import webdriver
import time
import html5lib

driver = webdriver.Firefox()
driver.implicitly_wait(10)

driver.get('http://myurl.com')
try:
    time.sleep(4)
    iframe = driver.find_elements_by_tag_name('iframe')[0]
    driver.switch_to_default_content()

    driver.switch_to_frame(iframe)
    driver.switch_to_default_content()
    driver.find_elements_by_tag_name('iframe')[0]

    output = driver.page_source

    print output

finally:
    driver.quit();

在返回的文本中,似乎还有两个iframe。我怎么才能拿到这些?我在上面的代码中尝试过,但没有成功。


Tags: tonamefromimportdefaultbytimetag
1条回答
网友
1楼 · 发布于 2024-05-14 14:56:36

switch_to_default_content()将返回文档顶部。正在发生的是,您切换到第一个iframe,切换回文档顶部,然后试图找到第二个iframe。硒找不到第二个iframe,因为它在第一个iframe的内部。

如果您删除第二个switch_to_default_content(),您应该可以:

iframe = driver.find_elements_by_tag_name('iframe')[0]
driver.switch_to.default_content()

driver.switch_to.frame(iframe)
driver.find_elements_by_tag_name('iframe')[0]

相关问题 更多 >

    热门问题