【发布时间】:2017-05-20 04:52:01
【问题描述】:
将量角器用于非 Angular 页面我遇到了来自 iframe 的模态元素位置问题,该 iframe 嵌套在另一个 iframe 中。我正在尝试定位元素,但总是收到 Element not found 错误。
页面来源:
<iframe ...
...
<iframe frameborder="0" ...
<html
<head
<body
<div id="viewport" style= ...
<div id="modal" class=" unit ...
页面对象:
this.layout = element(by.css('div[data-field="device"]'));
this.firstIframe = this.layout.element(by.tagName('iframe'));
this.content = element(by.tagName('body.desktop'));
this.secondIframe = element.all(by.tagName('iframe')).last();
this.modalUnit = element(by.id('modal'));
规格:
...
// waiting for first iframe to be visible
browser.wait(EC.visibilityOf(page.firstIframe),10000).then(function() {
// switch to first iframe
browser.driver.switchTo().frame(page.firstIframe.getWebElement());
// verify content is displayed
expect(page.content.isDisplayed()).toBeTruthy();
// switch to default content
browser.switchTo().defaultContent();
});
// waiting for second iframe to be visible
browser.wait(EC.visibilityOf(page.secondIframe),10000).then(function() {
// switch to second iframe
browser.driver.switchTo().frame(page.secondIframe.getWebElement());
// waiting for modal to be visible
browser.wait(EC.visibilityOf(page.modalUnit),10000).then(function() {
...
在第一个 iframe 中找到内容元素没有问题。但是没有找到来自第二个 iframe 的 modalUnit 元素,而找到了第二个 iframe。知道为什么吗?
【问题讨论】:
-
当您搜索“模态单元”元素时,您确定您处于正确框架的上下文中吗?意思是,确定
last()会给你你认为你需要的框架?.. -
@alecxe:是的,因为如果我搜索页面上的所有 iframe 标记名,我会得到两个结果。
标签: iframe modal-dialog protractor