如何更改被测应用程序(AUT)的文档HTML?

时间:2019-11-05 22:57:13

标签: cypress

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

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

cy.visit('/')
cy.get('html')
    .invoke('attr', 'innerHTML', '<head></head><body><h1>Hello</h1><body>')

1 个答案:

答案 0 :(得分:0)

注意::如果您只是想测试本地文件系统上的文件,请看一下如何设置简单的静态文件服务器,例如http-server,然后在运行赛普拉斯之前将其启动。

话虽如此,这是一个在测试过程中如何手动更改HTML的答案,这在某些情况下可能仍然有用。


int colorOff; int colorOn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mini_game); colorOff = getResources().getColor(R.color.toggleOff); colorOn = getResources().getColor(R.color.toggleOn); } 调用jQuery的attr()方法,该方法在.invoke('attr')html)元素上设置HTML 属性

(旁注:jQuery来自何处?赛普拉斯将基于DOM的赛普拉斯命令产生的DOM元素包装到jQuery对象中,以便您可以进一步在这些元素上使用jQuery方法。实际上,{{1} }使用jQuery进行选择,因此您可以在document.documentElement命令中使用任何与jQuery兼容的选择器。)

要设置其cy.get(selector),您不想设置属性,但是要设置其DOM 属性 ---因此调用jQuery的{{3} }方法:

cy.get

或更妙的是,使用jQuery的prop方法:

innerHTML

顺便说一句,如果最终需要更多控制,您还可以在没有 jQuery的回调中操作文档HTML:

cy.get('html').invoke('prop', 'innerHTML', '<head></head><body><h1>Hello</h1><body>');

话虽如此,如果您仅设置内容,我将操纵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>
    `;
});