我正在尝试重写要测试的完整页面,以包括本地内容。我试图获取html元素并将其全部替换。我要为图像添加base64数据,但是我希望看到文本作为开始。
访问本地HTML文件不起作用。寻找解决方法。
cy.visit('/')
cy.get('html')
.invoke('attr', 'innerHTML', '<head></head><body><h1>Hello</h1><body>')
.invoke('attr')
调用jQuery的attr()
方法,该方法在attr()
(html
)元素上设置HTML attribute。
(Sidenote:jQuery来自何处?Cypress将基于DOM的Cypress命令产生的DOM元素包装到jQuery对象中,以便您可以在这些元素上进一步使用jQuery方法。实际上,document.documentElement
使用jQuery用于选择,因此您可以在cy.get(selector)
命令中使用任何与jQuery兼容的选择器)。
要设置其cy.get
,您不想设置属性,但要设置其DOM 属性 ---因此调用jQuery的innerHTML
方法:
prop
或更妙的是,使用jQuery的prop
方法:
cy.get('html').invoke('prop', 'innerHTML', '<head></head><body><h1>Hello</h1><body>');
顺便说一句,如果最终需要更多控制,您还可以在回调without jQuery中操作文档HTML:
html
话虽如此,如果您仅设置内容,我将操纵cy.get('html').invoke('html', '<head></head><body><h1>Hello</h1><body>');
元素:
cy.document().then( document => {
document.documentElement.innerHTML = `
<style>.item { color: red }</style>
<body>
<div class="item">hello</div>
</body>
`;
});