Switching to Parent Frame from iFrame and finding an element in Parent frame using Selenium Webdriver. C#
Thats for your responses guys. It is solved!
The solution:
While I use the
webDriver.SwitchTo().DefaultContent();
it switches thewebDriver
to the top most window of the page. [Previously I was looking for the button element in this window and therefore was not able to find it as the button was sitting in the main frame of the page]After switching to the main window, I switched the
webDriver
again to the main frame of the page. This main frame had the button element. Thus I was able to find the button element. And this slved the issue!
So the final code doesn't have webDriver.SwitchTo().DefaultContent();
but has the following in its place:
_webDriver.SwitchTo().Window(windowHandle);
_webDriver.SwitchTo().Frame("mainFrame");
Note: windowHandle in the above code is the handle of the top most window of the page. I guess it's value may change according to the browsers, not sure though.
The following code worked fine:
driver.switchTo().parentFrame();
I was struggling with a similar problem and found that I could switch back by Window Handle
:
string currentWindow = Driver.CurrentWindowHandle;
// switch to frame and do stuff..
Driver.SwitchTo().Window(currentWindow); // switch back