0

我有以下带框架的 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"));               
            }

我在这里错过了什么吗?如何在同级框架之间切换?

4

1 回答 1

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");
于 2013-04-19T04:22:19.217 回答