我正在为旧应用程序编写测试,该应用程序的主文档中包含一个iFrame,然后在其中包含另一个iFrame。因此,层次结构为:
Html Div (id = tileSpace) iFrame (id = ContentContainer) iFrame (id = Content) Elements
这是我的代码(我正在使用C#)
RemoteWebDriver driver = new InternetExplorerDriver(); var tileSpace = driver.FindElement(By.Id("tileSpace")); var firstIFrame = tileSpace.FindElement(By.Id("ContentContainer")); var contentIFrame = firstIFrame.FindElement(By.Id("Content"));
问题是,我无法达到第二级iFrame,即contentIFrame
有任何想法吗?
我目前正在类似的网站上进行测试。(主文档中的嵌套iframe)
<div> <iframe> <iframe><iframe/> <iframe/> </div>
似乎您没有使用Api中提供的 帧切换方法 。这可能是问题所在。
这是我在做什么,对我来说很好。
//make sure it is in the main document right now driver.SwitchTo().DefaultContent(); //find the outer frame, and use switch to frame method IWebElement containerFrame = driver.FindElement(By.Id("ContentContainer")); driver.SwitchTo().Frame(containerFrame); //you are now in iframe "ContentContainer", then find the nested iframe inside IWebElement contentFrame = driver.FindElement(By.Id("Content")); driver.SwitchTo().Frame(contentFrame); //you are now in iframe "Content", then find the elements you want in the nested frame now IWebElement foo = driver.FindElement(By.Id("foo"));