我有以下带框架的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"));
}
我在这里遗漏了什么吗?如何在兄弟帧之间切换?
答案 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");