首页 > 解决方案 > 在 cypress 中切换到 iFrame 相当于 Protractor

问题描述

我在我的 SUT(网页)中遇到了一个挑战,该挑战在 iFrame 中嵌入了一个作为 javascript 的日志。当我像这样使用 Protractor 时,同样的挑战得到了解决:

var driver = browser.driver;
var loc = by.tagName('iframe');
var el = driver.findElement(loc);

browser.switchTo().frame(el);

是否可以在 cypress 脚本中进行这种切换?

有人可以举个例子吗?

标签: javascriptiframecypress

解决方案


目前这是不可能的。但是,有一种解决方法可以在 iframe 中执行操作和断言。这是 GitHub 上 tscott-au 的一个非常好的示例

cy.get('#myIframe')
  .then(function ($iframe) {
    const $jbody = $iframe.contents().find('body')
    const $body = $jbody[0]
    cy.wrap($body).find('#myField').should('exist')
  })
})

此解决方法有一些注意事项。有关更多信息,请参阅此链接,但这里有一个报价:

...您可以...针对这些元素并可能对它们执行操作 [但]您不能返回它们或在 cypress 命令中使用它们。


推荐阅读