Iframe 在自定义帮助程序中使用'within'

Iframe 在自定义帮助程序中使用'within',iframe,codeceptjs,Iframe,Codeceptjs,我正在使用并尝试编写一个声明文本并单击“确定”的脚本。此对话框作为iframe模式弹出,以同意Cookie 如果我在场景中编写以下步骤 I.amOnPage('/some path'); 在({frame:'#iframeID'},()=>{ I.see(“对话标题文本”); I.单击(“确定”); }); // ... …我的测试似乎很好 但是,当我用它制作一个自定义帮助器并正确配置它时,我可以使用它: const{Helper}=codeceptjs; 类CookieConsent扩展了H

我正在使用并尝试编写一个声明文本并单击“确定”的脚本。此对话框作为iframe模式弹出,以同意Cookie

如果我在场景中编写以下步骤

I.amOnPage('/some path');
在({frame:'#iframeID'},()=>{
I.see(“对话标题文本”);
I.单击(“确定”);
});
// ...
…我的测试似乎很好

但是,当我用它制作一个自定义帮助器并正确配置它时,我可以使用它:

const{Helper}=codeceptjs;
类CookieConsent扩展了Helper{
同意与Cookies(){
const{puppeter}=this.helpers;
在({frame:'#iframeID'},()=>{
木偶演员。参见(“对话标题文本”);
木偶演员。点击('OK');
});
}
}
module.exports=CookieConsent;
…并将其作为一个步骤:

I.amOnPage('/some path');
(一)同意;
// ...
…它似乎不起作用,因为在场景中直接实现此功能时,同意对话框不会被单击。根据一些
console.log()
的说法,在回调中调试根本不会被调用。Console不会抛出任何有关中未定义的
或任何可疑内容的错误

我怀疑在自定义帮助程序中使用
内的
不起作用,或者我做了一些从文档中看不出来的错误

当INTERIN被错误地使用时,此警告不会真正澄清,而使用
wait
也无助于解决问题

如果使用不当,内部可能会导致问题。如果您看到测试的奇怪行为,请尝试将其重构为不在内部使用。在可能的情况下,建议在最简单的情况下保持在范围内。因为inthesis返回一个承诺,所以即使您不打算使用返回值,也可能需要等待结果


当涉及到自动化时,如果没有iFrame,工作可能会很痛苦。有许多因素会使框架无法访问iFrame,例如跨域iFrame,通常用于增强所服务内容的安全性

现在要解决您的问题,您只需在CodeceptJS中使用
switchTo()
——这是一个可供所有可用助手使用的函数。订单应该是

I.切换到(“您的iframe”);
..... 这里有一些行动;
I.切换到();//这样做是为了在完成时脱离iFrame上下文