该网站包含以下内容:
它有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();
}
}
答案 0 :(得分:2)
您可以使用以下方法实际选择iFrame: -
frame(帧的名称[或]帧的ID)
frame(WebElement frameElement)
因此,您可以通过传递有关帧的任何上述信息进行切换。 是的,您需要根据需要的操作每次切换
我们可以看到您的框架有不同的名称,如: - top
,navigation
等。使用框架名称在它们之间切换
实施例: -
driver.SwitchTo().Frame("top");
....在框架上执行您的操作
driver.SwitchTo().defaultContent();
driver.SwitchTo().Frame("navigation");
....在框架上执行您的操作
driver.SwitchTo().defaultContent();
希望它能帮到你:)
答案 1 :(得分:0)
我过去使用过这样做:
m_internetExplorerDriver.SwitchTo().DefaultContent();
//put your name or id instead, e.g. "navigation" instead of "menuframe"
m_internetExplorerDriver.SwitchTo().Frame("menuframe");
基本上你使用Frame()方法在帧之间切换..
在这个问题中,您可以阅读如何识别框架:
How to identify and switch to the frame in selenium webdriver when frame does not have id