【问题标题】:Protractor testing in iframe in other non-Angular application?在其他非 Angular 应用程序中的 iframe 中进行量角器测试?
【发布时间】:2014-05-22 11:27:53
【问题描述】:

我的应用程序与其他站点集成。该集成是通过单击按钮建立的。当我单击按钮时,弹出窗口显示来自另一个站点的 html。我通过将 URL 放入 iframe 来显示该内容。网址来自外部网站:

<iframe class='' ng-src="{{url}}"></iframe>

我可以对该弹出窗口中的元素执行量角器测试吗?

当我尝试通过 ID 访问弹出窗口中的元素时,它显示 未找到此类元素。我通过 Firefox 上的 Firebug 工具获得了元素的 ID。我点击了这个,它返回错误:

expect(element(by.id('**id of element in pop-up**')).isDisplayed()).toBe(true);

有人可以帮我解决这个问题吗?是否可以在这种 html 上运行 Protractor 测试?

【问题讨论】:

  • 你见过this question吗?
  • 是的,但我无法切换到我的 iframe。当我点击: ptor.switchTo().frame(driver.findElement(protractor.By.xpath('//iframe')));它说我不是页面上的 iframe。
  • 我将 ID 设置为 iframe 并尝试通过 id 访问,但它说:“没有这样的元素。”
  • 我可以使用 tagName 切换到 iframe,但我仍然无法访问该弹出窗口上的按钮
  • 当您说弹出窗口时,您是什么意思?是新窗口吗?一个设计为弹出窗口的简单 div?你能提供一个 JS-bin 或链接本身的例子吗?

标签: javascript angularjs selenium-webdriver protractor


【解决方案1】:

您需要将上下文切换到 iframe。您可以通过添加以下代码行来做到这一点:

var driver = ptor.driver;
ptor.switchTo().frame(driver.findElement(protractor.By.tagName('iframe')));

现在尝试在弹出窗口中访问您的元素吗?

【讨论】:

  • 我将 WebDriver 的上下文切换到 iframe,但我仍然无法访问该 html 上的元素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-25
  • 1970-01-01
  • 2014-08-08
  • 2018-10-09
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多