Javascript 使用Cypress获取HTML文件中指定的对象
我试图使用cypress与一个JS库交互,该库将用户界面呈现给DOM。用户通过表示GUI的对象实例与库交互Javascript 使用Cypress获取HTML文件中指定的对象,javascript,cypress,Javascript,Cypress,我试图使用cypress与一个JS库交互,该库将用户界面呈现给DOM。用户通过表示GUI的对象实例与库交互 let editor = new Formr.Editor(...); 上述行位于index.html页面中的标记中。我正在呼叫cy.visit(./index.html)页面加载正常,但使用cy.wrap(编辑器)抱怨editor未定义 我需要访问编辑器实例的原因是在与DOM交互后检查它的状态 如何从cypress中访问编辑器 更新:Richard的建议 所以我试过这个: index.
let editor = new Formr.Editor(...);
上述行位于index.html页面中的
标记中。我正在呼叫cy.visit(./index.html)
页面加载正常,但使用cy.wrap(编辑器)
抱怨editor
未定义
我需要访问编辑器
实例的原因是在与DOM交互后检查它的状态
如何从cypress中访问编辑器
更新:Richard的建议
所以我试过这个:
index.html:
const editor=window.editor=new Formr.editor(…)
柏树试验:
it("Should add a row when clicked", () => {
cy.visit('http://localhost:63342/formr');
const editor = cy.state('window').editor;
cy.get("#feditor-add-row-button")
.click();
cy.wrap(editor)
.invoke('Data')
.its('rows')
.should('eq', 1);
});
不幸的是,它似乎仍然不起作用。cypress是否足够智能,可以等待
窗口
准备就绪?在脚本标记中,您可以在窗口上设置对编辑器
的引用
let editor=new Formr.editor(…);
window.editor=编辑器;
然后在测试中抓住它
const editor=cy.state('window').editor;`。
有关更多详细信息,请参见将Vuex添加到窗口的位置,以使其在测试中可访问 解决方案是使用
。its
与Richard Matsen的建议相结合,将编辑器
分配给窗口
变量
cy.window()
.its('editor.rows.length')
.should('equal', 2);
似乎不起作用。请参阅我的编辑。而且,我似乎在cypress文档中的任何地方都找不到
state
,我的IDE抱怨它没有定义。。。你确定它存在吗?这对我来说很好。cy.state()用于很多地方,例如代码覆盖率插件。有一个对文档的请求,但是在被接受之前,api可能会改变。