2014-04-25 11 views
5

मैं एक iframe सेलेनियम, अजगर का उपयोग कर के भीतर एक iframe का उपयोग करने की कोशिश कर रहा हूँ, और BS4अजगर सेलेनियम एक 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 में स्विच दो और iframes का प्रतीत होता है। मैं उन तक कैसे पहुंचूँगा? मैंने सफलता के बिना उपरोक्त कोड में प्रयास किया है।

किसी भी मदद की सराहना की जाती है।

उत्तर

14

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]