четверг, 13 февраля 2014 г.

JS Submit ALERT/CONFIRM. Selenium

   Для написания теста на selenium, столкнулся с необходимостью, подверждения confirm'a. Тк в драйвере селениума нет стандартного решения для подверждения конфирма, то пришлось пойти таким путем:
        $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();
            }
        }
        ");

Комментариев нет:

Отправить комментарий