0 votes
1 view
in DevOps and Agile by (19.8k points)


  <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(&quot;/libs/cq/ui/widgets/themes/default/ext/form/text-bg.gif&quot;); background-repeat: repeat-x; background-attachment: fixed;">


      </body >




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.

1 Answer

0 votes
by (63.4k points)
edited by

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 the outer frame again.

 // between step 4 and step 5

// remove selenium.selectFrame("relative=up");

driver.switchTo().defaultContent(); // you are now outside both frames


// now continue step 6


Welcome to Intellipaat Community. Get your technical queries answered by top developers !