我正在尝试重写整个测试页面以包括本地内容。我试图获取html元素并将其全部替换。我需要为图像添加base64数据,但我希望看到文本作为开始。
访问本地HTML文件不起作用。寻找解决方法。
cy.visit('/')
cy.get('html')
.invoke('attr', 'innerHTML', '<head></head><body><h1>Hello</h1><body>')
答案 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>
`;
});