Estoy intentando acceder a un iframe dentro de un iframe utilizando Selenium, Python y BS4
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();
Dentro del texto devuelto, parece haber dos iframes más. ¿Cómo puedo acceder a esos? He intentado en el código anterior sin éxito.
switch_to_default_content()
lo regresará a la parte superior del documento. Lo que estaba sucediendo es que cambiaste el primer iframe
, volvías a la parte superior del documento y luego tratabas de encontrar el segundo iframe
. El selenium no puede encontrar el segundo iframe
, porque está dentro del primer iframe
.
Si elimina el segundo switch_to_default_content()
debería estar bien:
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]