WebDriver>在兄弟帧之间切换

时间:2013-04-19 04:03:50

标签: java webdriver

我有以下带框架的HTML

<frameset border="0" cols="*,0">
  <frame scrolling="auto" src="/cgi-bin/haipage/page.html?tpl=ntrc/index" name="smgleft">
    <html>
      <head>
    <frameset frameborder="0" border="0" rows="20%,*" cols="100%">
      <frame scrolling="no" marginheight="0" marginwidth="0" src="/cgi-bin/haipage/page.html?tpl=Administration/b" name="head">
      <frame scrolling="auto" marginhei![enter image description here][1]ght="0" marginwidth="0" src="/cgi-bin/haipage/page.html" name="main">
          </html>
          </frame>
        </frameset>
    </html>
  </frame>
</frameset>

当我登陆页面时,我正在使用

 wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("head"));

因为我想访问'head'框架下的一些元素

现在我想切换frame = main,所以我正在使用

 driver.switchTo().defaultContent();
 driver.switchTo().frame("main");

但是我收到错误消息“无法找到帧”。我相信调用driver.switchTo()。defaultContent()到达顶部,然后转到你想要的框架。

另外,当我在切换到defaultContent()后尝试查找帧时,我在日志中只看到一帧='smgleft'

 List<WebElement> frameset = driver.findElements(By.tagName("frame"));  
   if(frameset.size()>0) {  
            for (WebElement framename : frameset)
                logger.info("frameid: " + framename.getAttribute("name"));               
            }

我在这里遗漏了什么吗?如何在兄弟帧之间切换?

1 个答案:

答案 0 :(得分:1)

从我记忆中,没有一种叫做“在兄弟帧之间切换”的东西。你在做什么在理论上应该是正确的(除非你想从默认内容进入main,你需要先切换到smgleft

你试过吗

driver.switchTo().defaultContent();
driver.switchTo().frame("smgleft");
// maybe some debugging here see if you can find frame "main" now
driver.switchTo().frame("main");