我正在编写恶梦剧本以测试网站。问题出在页面事件上。有一个脚本
<button id="btn" onclick="myFunction()">Try it</button>
<script>
function myFunction() {
confirm("Press a button!");
}
</script>
&#13;
并且恶梦剧本是
var Nightmare = require('nightmare');
const path = require('path');
var nightmare = Nightmare({
show: true,
webPreferences: {
preload: path.resolve("pre.js")
//alternative: preload: "absolute/path/to/custom-script.js"
}
})
var confirm = 'confirm';
nightmare.on('page', function(confirm, message, response){
return true;
});
nightmare
.goto('http://localhost:3000/index.html')
.click('#btn')
.wait(1000)
.evaluate(function () {
return "just value";//document.querySelector('#main .searchCenterMiddle li a').href
})
.end()
.then(function (result) {
console.log(result)
})
.catch(function (error) {
console.error('Search failed:', error);
});
function testing(arg){
console.log(arg);
}
&#13;
像node test.js
打开浏览器窗口并单击按钮。但是不知道如何按“确定”。确认弹出按钮,以便我可以进行下一次测试。 &#39; OK&#39;不需要回复。按钮只需要点击“确定”即可。确认窗口中的按钮。
非常感谢任何帮助。
由于
答案 0 :(得分:0)
default preload script会覆盖window.prompt
,window.alert
和window.confirm
。您已使用自定义脚本覆盖默认脚本。如果您的自定义预加载脚本没有重现默认脚本的行为,那么您所拥有的将不起作用。
为了完整性,这是来自默认预加载脚本的剪辑,该脚本显示window
方法覆盖以及用于连接事件的IPC消息:
// overwrite the default alert
window.alert = function(message){
__nightmare.ipc.send('page', 'alert', message);
};
// overwrite the default prompt
window.prompt = function(message, defaultResponse){
__nightmare.ipc.send('page', 'prompt', message, defaultResponse);
}
// overwrite the default confirm
window.confirm = function(message, defaultResponse){
__nightmare.ipc.send('page', 'confirm', message, defaultResponse);
}