我正在尝试重写整个被测页面

问题描述 投票:0回答:1

我正在尝试重写要测试的完整页面,以包括本地内容。我试图获取html元素并将其全部替换。我要为图像添加base64数据,但是我希望看到文本作为开始。

访问本地HTML文件不起作用。寻找解决方法。

      cy.visit('/')
      cy.get('html')
        .invoke('attr', 'innerHTML', '<head></head><body><h1>Hello</h1><body>')
cypress
1个回答
0
投票

.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>
    `;
});
© www.soinside.com 2019 - 2024. All rights reserved.