Intellipaat Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in DevOps and Agile by (19.7k points)

<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(&quot;/libs/cq/ui/widgets/themes/default/ext/form/text-bg.gif&quot;); 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 the 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 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 (62.9k points)

You need to first find iframe. You can do so using the following statement.

WebElement iFrame= driver.findElement(By.tagName("iframe"));

Then, you can switch to it using switchTo method on your WebDriver object.

driver.switchTo().frame(iFrame);

And to move back to the parent frame, you can either use switchTo().parentFrame() or if you want to get back to the main (or most parent) frame, you can use switchTo().defaultContent();.

driver.switchTo().parentFrame();    // to move back to parent frame

driver.switchTo().defaultContent(); // to move back to most parent or main frame

Hope this helps.

31k questions

32.8k answers

501 comments

693 users

Browse Categories

...