一尘不染

Python Selenium切换到iframe中的iframe

selenium

我正在尝试使用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。我将如何访问那些?我尝试上面的代码没有成功。


阅读 353

收藏
2020-06-26

共1个答案

一尘不染

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]
2020-06-26