【问题标题】:WebDriver > switch between sibling framesWebDriver > 在同级框架之间切换
【发布时间】:2013-04-12 09:31:12
【问题描述】:

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

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

【问题讨论】:

    标签: java webdriver


    【解决方案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");
    

    【讨论】:

    • 谢谢,这行得通...所以我必须先切换到 defaultContent(),然后切换到 frame=smgleft,然后切换到 frame=main...(我不能直接从 defaultContent 跳转到main)....很高兴知道..再次感谢...!
    猜你喜欢
    • 2015-04-17
    • 2020-05-28
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多