Reputation: 3451
The website has the following elements:
It has 3 different frames, how do I navigate myself to the desired frame?
In my following code, using trial and errors I found that frameIndex = 1
allows me to find those elements (welcome, config, instruments, etc).
But does this index number stay the same all the time? Is there a more reliable way for me to know which frame is which?
[TestClass]
public class Test2
{
IWebDriver driver;
string url = "http://10.116.33.6/";
[TestInitialize]
public void TestSetup()
{
var IEOption = new InternetExplorerOptions();
var IEService = InternetExplorerDriverService.CreateDefaultService();
IEOption.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
IEOption.IgnoreZoomLevel = true;
IEService.HideCommandPromptWindow = true;
driver = new InternetExplorerDriver(IEService, IEOption);
driver.Navigate().GoToUrl(url);
}
[TestMethod]
public void NavigateMenu()
{
driver.SwitchTo().Frame(1);
var welc = driver.FindElement(By.Name("welcome"));
var conf = driver.FindElement(By.Name("config")) ;
var inst = driver.FindElement(By.Name("instruments"));
var stat = driver.FindElement(By.Name("status")) ;
var help = driver.FindElement(By.Name("help")) ;
conf.Click();
}
}
Upvotes: 0
Views: 2220
Reputation: 17553
You can actually select an iFrame using the below methods: -
frame(Name of Frame [or] Id of the frame)
frame(WebElement frameElement)
So you can switch by passing the any above information about the frame. Yes you need to switch everytime according to require action
As we can see your frame have different name like :- top
, navigation
etc. Use name of the frame to switch between them
Example:-
driver.SwitchTo().Frame("top");
.... Perform your action on frame
driver.SwitchTo().defaultContent();
driver.SwitchTo().Frame("navigation");
.... Perform your action on frame
driver.SwitchTo().defaultContent();
Hope it will help you :)
Upvotes: 2
Reputation: 2429
I have done this in the past using:
m_internetExplorerDriver.SwitchTo().DefaultContent();
//put your name or id instead, e.g. "navigation" instead of "menuframe"
m_internetExplorerDriver.SwitchTo().Frame("menuframe");
Basically you use the Frame() method to switch between frames..
In this question you can read how to identify the frame:
How to identify and switch to the frame in selenium webdriver when frame does not have id
Upvotes: 0