我正在尝试使用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。我将如何访问那些?我尝试上面的代码没有成功。
switch_to_default_content()将返回到文档顶部。发生的事情是您切换到第一个iframe,然后又切换回文档的顶部,然后尝试查找第二个iframe。硒找不到第二个iframe,因为它在第一个之内iframe。
switch_to_default_content()
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]