WillX0r
WillX0r

Reputation: 123

Playwright Python: Get Attribute inside Iframe

I'm trying to get 'src' of iframe element using Playwright and Python. Here is the HTML I'm trying to access:

<iframe title="IFRAME_NAME" src="https://www.data_I_want_TO_get.com"> </iframe>

my goal is to grab 'src' attribute. here is what I've tried so far

    src=page.frame_locator("IFRAME_NAME")
    print(src.inner_html())

    #also 

    src=page.frame_locator("IFRAME_NAME").get_by_role("src")
    print(src)

and many other things that are NOT working, most of the time I get:

AttributeError: 'FrameLocator' object has no attribute 'inner_html'
nor .get_attribute

How should I proceed about this?

Upvotes: 1

Views: 1355

Answers (1)

ggorlen
ggorlen

Reputation: 57175

Absent seeing the actual site, a traditional selection and get_attribute should be sufficient:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.set_content("""
    <iframe title="IFRAME_NAME" src="https://www.data_I_want_TO_get.com"></iframe>
    """)
    src = page.get_attribute('iframe[title="IFRAME_NAME"]', "src")
    print(src)  # => https://www.data_I_want_TO_get.com
    browser.close()

If the frame isn't immediately visible you can wait for it by replacing the src = line with

src = (
    page.wait_for_selector('iframe[title="IFRAME_NAME"]')
        .get_attribute("src")
)

Upvotes: 2

Related Questions