Для написания теста на selenium, столкнулся с необходимостью, подверждения confirm'a. Тк в драйвере селениума нет стандартного решения для подверждения конфирма, то пришлось пойти таким путем:
Вот это window.confirm = function() {return true;}; переписывает стандартную функцию confirm, на функцию которая всегда возвращает true, вместо окошка confirm.
Аналогично, можно сдлеать и с alert, но в selenium'e для него имеется такое решение:
Позже решил что прошлый код не безопасен и переписал его на:
$this->getSession()->executeScript("window.confirm = function() {return true;};");
$this->getSession()->executeScript("document.getElementsByClassName('form-buttons')[1].getElementsByTagName('button')[2].click();");
Вот это window.confirm = function() {return true;}; переписывает стандартную функцию confirm, на функцию которая всегда возвращает true, вместо окошка confirm.
Аналогично, можно сдлеать и с alert, но в selenium'e для него имеется такое решение:
$this->getSession()->getDriver()->getWebDriverSession()->accept_alert();
Позже решил что прошлый код не безопасен и переписал его на:
$this->getSession()->executeScript("window.confirm = function() {return true;};");
$this->getSession()->executeScript("
var order_buttons = document.getElementsByClassName('form-buttons')[0].getElementsByTagName('button');
for(var i=0; i<order_buttons.length; i++){
if(order_buttons[i].title == 'Cancel'){
order_buttons[i].click();
}
}
");