I am new to Selenium for Python and was trying to locate element in multiple iframes. This is the DOM element I can see.
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>...</head>
<body>
<form>
...
<div class="page">
<div class="main clear" style="z-index: 20; position:relative;">
<div id="placeOrder">
<iframe src="BuyFlow.aspx" frameborder="0" width="1150" height="950">
#document
<html>
<body>
<form>
...
<iframe id="CreativeLiftFrame">
#document
<html>
...
<body id="multiple-addresses">
...
</body>
</html>
</iframe>
</form>
</body>
</html>
</iframe>
</div>
</div>
</div>
</form>
</body>
</html>
What I want to do is to get the <body> tag's id name of second <iframe>.
That's "multiple-addresses".
In order to do that I have written my code as follows.
# Switch to the first iframe
iframe = driver.find_element(By.TAG_NAME, 'iframe')
driver.switch_to_frame(iframe)
# Fill in Address and ZipCode inputbox and submit form
address_input.send_keys(address)
postcode_input.send_keys(postcode)
postcode_input.send_keys(Keys.RETURN)
# Check Available - Inner iframe
second_iframe = WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.TAG_NAME, 'iframe')))
driver.switch_to_frame(second_iframe)
print(second_iframe.get_attribute("id")
body = WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.TAG_NAME, 'body')))
print(body.get_attribute("id")
As a result, I get 2 outputs on console.
CreativeLiftFrame
None
As you can see, selenium driver located the second iframe, but can't locate body tag's id in SECOND iframe.
I'm not sure how I can handle it.