【发布时间】:2019-07-09 19:20:47
【问题描述】:
我在尝试切换到包含在 <section> 标记中的 iFrame 时遇到 NoSuchFrame 异常。有人可以帮我吗?
我正在尝试切换到 iFrame 进行硒测试。我已经使用driver.switchTo()方法切换到iFrame。
<section>HTML:
<section id="modal-root">
<div class="modal-wrapper">
<div id="#####" class="modal-container modal-enter-done">
<div class="modal ####" role="dialog">
<button type="button" aria-label="Close Modal" class="button-icon
modal-close">
<span class="icon icon-x">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none"
role="presentation">
<path d="M8.41421 7L13.7071 12.2929C14.0976 12.6834 14.0976 13.3166
13.7071 13.7071C13.3166 14.0976 12.6834 14.0976 12.2929 13.7071L7
8.41421L1.70711 13.7071C1.31658 14.0976 0.683418 14.0976 0.292893
13.7071C-0.0976311 13.3166 -0.0976311 12.6834 0.292893
12.2929L5.58579 7L0.292893 1.70711C-0.0976311 1.31658
-0.0976311 0.683418 0.292893 0.292893C0.683418 -0.0976311 1.31658
-0.0976311 1.70711 0.292893L7 5.58579L12.2929 0.292893C12.6834
-0.0976311 13.3166 -0.0976311 13.7071 0.292893C14.0976 0.683418
14.0976 1.31658 13.7071 1.70711L8.41421 7Z" transform="translate(5
5)" fill="black">
</path>
</svg>
</span>
</button>
<div class="modal-body">
<div class="#####">
<iframe title="######" id="#####" name="#####"src="######">
</iframe>
</div>
</div>
</div>
</div>
<div class="modal-overlay">
</div>
</div>
</section>
我正在尝试在我的测试中切换到 iFrame。我正在运行以下 sn-p:
WebDriver driver = new ChromeDriver();
driver.get(url);
driver.manage().window().maximize();
driver.switchTo().frame(iFrame_id);
我遇到了以下异常:
org.openqa.selenium.NoSuchFrameException:找不到框架元素 名称或 ID iFrame_id
我不确定是否可以直接切换到 iFrame,因为它包含在 <section> 标记中。
感谢任何帮助!
【问题讨论】:
-
在页面源中搜索“frame”,看看是否有多个frame或者iframe。您想要的可能是嵌套的。
-
如果只是一个iframe那么就用索引来切换。框架 ID 可以是动态的。 driver.switchTo().frame(0);
-
@Sureshmani 虽然在这种情况下使用索引 0 现在可以工作,但最好查看它是否具有 ID 或名称并使用它。将来,可能会添加更多帧,并且在名称/ID 不太可能更改的情况下,索引可能会意外失败。
-
尝试使用等待...您可能会看到此错误,因为它仍在加载:“new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.locator));”
-
@iamdanchiv 感谢您让帖子看起来很专业!