C#中的Selenium – 如何导航不同的帧

该网站包含以下内容:

HTML

它有3个不同的帧,我如何导航到所需的帧? 在我的下面的代码中,使用试验和错误我发现frameIndex = 1允许我找到这些元素(欢迎,配置,工具等)。

但这个索引号一直保持不变吗? 有没有更可靠的方法让我知道哪个帧是哪个?

 [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(); } } 

您可以使用以下方法实际选择iFrame: –

  • 帧(索引)
  • frame(帧的名称[或]帧的ID)

  • frame(WebElement frameElement)

  • defaultContent()

因此,您可以通过传递有关框架的任何上述信息进行切换。 是的,您需要根据需要的操作每次切换

我们可以看到你的框架有不同的名称,如: – topnavigation等。使用框架的名称在它们之间切换

例:-

 driver.SwitchTo().Frame("top"); 

….在框架上执行你的行动

 driver.SwitchTo().defaultContent(); driver.SwitchTo().Frame("navigation"); 

….在框架上执行你的行动

 driver.SwitchTo().defaultContent(); 

希望它能帮到你:)

我过去使用过:

 m_internetExplorerDriver.SwitchTo().DefaultContent(); //put your name or id instead, eg "navigation" instead of "menuframe" m_internetExplorerDriver.SwitchTo().Frame("menuframe"); 

基本上你使用Frame()方法在帧之间切换..

在这个问题中,您可以阅读如何识别框架:

当帧没有id时,如何识别并切换到selenium webdriver中的帧