So right now I'm trying to figure out how I can switch focus to a frame in Selenium 2 when the frame has no name or id? For a named frame I do:
driver.SwitchTo().Frame(FrameName);
but what is there is no name? Has anyone had experience with this?
In selenium if you know that the relative location of the frame you should be able to use the selectFrame command with the string "relative=up" to move it up a frame e.g.
selenium.SelectFrame("relative=up");
or to jump to the top frame use "relative=top"In addition to using the index (as the other answers suggest), in C# you can select the iFrame by tagName. My example assumes there is one and only one iFrame on the page.
Note: You have to get the information from the IWebElement .Text or .Click for example, before calling Driver.SwitchTo().DefaultContent();
I created these extensions methods to help
An example of using the extensions methods:
You can use the index of the frame. Since you don't have name and id for the frame, driver.switchTo().frame(int frameIndex)
driver.switchTo.frame() is overloaded to accept a frame name or an integer. This int is a 0 based index of the frames available. The first frame would be 0, the second 1 and so on.
I've just run a really quick test using the java binding and Firefox against this HTML page.
I'm successfully able to use driver.switchTo().frame(0); to refer to frame a and driver.switchTo().frame(1); to access frame b.
You can just give the id of your iframe instead of iframe-name.
Please see my below example, it worked for me.
In the example I am switching to one iframe in my page and clicking on the element in that iframe, which is "worksheet0" .
Use the code :
The HTMLof the iframe :