Clicking 'OK' on alert or confirm dialog t

2020-06-09 10:39发布

问题:

I was thinking of writing some UI tests in backbone.js and jquery. They may not be the best way to do it but it's something that I was thinking about - to automate the tests without record and playback - through plain code.

The only thing that made me scratch my head using this approach is this: In some 'use-case flow' (of the execution) confirm/alert dialogs would show up. I'd like to click 'Ok' and continue the flow - is this even doable through plain javascript code? How?

Note: I do know GUI testing libraries exist, but I want to know how to do it using just jQuery/javascript code, if at all possible.

回答1:

As far as I know if you use a standard alert() call you cannot trigger an "OK" click because the alert call blocks the normal JS event loop.

However you should be able to replace window.alert and window.confirm with your own function that does nothing:

window.alert = function() {
    console.log.apply(console, arguments);
};

Place these at the top of your JS before anything else is loaded and any subsequent calls to alert() or confirm() will call these instead.



回答2:

You want something like:

<script type="text/javascript">
var oldConfirm = confirm;
var oldAlert = alert;

confirm = function() {
    return true;
};
alert = function() {
    return true;
}

var response = confirm("Is this OK?");

if (response) {
    alert("Yay");
}
else {
    alert("Boo");
}

confirm = oldConfirm;
alert = oldAlert;
</script>