<div> <iframe id="cq-cf-frame "> <iframe id="gen367"> <body spellcheck="false" id="CQrte" style="height: 255px; font-size: 12px; font-family:tahoma,arial,helvetica,sans-serif; background-image: url("/libs/cq/ui/widgets/themes/default/ext/form/text-bg.gif"); background-repeat: repeat-x; background-attachment: fixed;"> <p>4t43t4<br></p> </body > </iframe> </iframe> </div>
In this scenario there is an iframe
under iframe
. And I have to select the outer iframe
to go to inner iframe
and write in the body which is in the inner iframe
.
Next, I have to come out from the inner iframe
to outer iframe
and click on OK button, (which is in the outer iframe
).
Following is my code
/*Line 1 */ driver.switchTo().frame("cq-cf-frame"); /* 2 */ driver.findElement(By.css("#extdd-9 > div.tblRow > input.edititem").click(); /* 3 */ driver.switchTo().Frame("cq-gen379"); /* 4 */ driver.findElement(By.id("CQrte").sendKeys("Tnx"); /* 5 */ selenium.selectFrame("relative=up"); /* 6 */ driver.findElement(By.xpath("//button[text()='OK']")).click();
Following is my problem:
My test code is working fine up to line number 4 i.e. writing into the body, but I want to come out from inner to outer iframe
it says that the element //button[text()='OK']
not found.
I tried with using index, parent, relative, but had no luck.
NOTE: If I don’t select the inner frame (cq-gen379
). I'm able to click on the OK button.
Right click on the element, If you find the option like 'This Frame' then it is an iframe. (Please refer the above diagram) Right click on the page and click 'View Page Source' and Search with the 'iframe', if you can find any tag name with the 'iframe' then it is meaning to say the page consisting an iframe.
For a browser to automatically start interacting with the web page, it is essential for the browser to identify the elements under the frame for Selenium testing. It is possible to identify the iframes on a web page in two ways: Right-click on the specific element and check all the options.
In Webdriver, you should use driver.switchTo().defaultContent();
to get out of a frame. You need to get out of all the frames first, then switch into outer frame again.
// between step 4 and step 5 // remove selenium.selectFrame("relative=up"); driver.switchTo().defaultContent(); // you are now outside both frames driver.switchTo().frame("cq-cf-frame"); // now continue step 6 driver.findElement(By.xpath("//button[text()='OK']")).click();
You have to get back out of the Iframe with the following code:
driver.switchTo().frame(driver.findElement(By.id("frameId"))); //do your stuff driver.switchTo().defaultContent();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With