2016-10-06 3 views
0

Я пишу сценарий кошмара, чтобы протестировать сайт. Проблема заключается в событиях страницы. Существует скриптКак использовать события nightmarejs page

<button id="btn" onclick="myFunction()">Try it</button> 
 
    <script> 
 
    function myFunction() { 
 
    confirm("Press a button!"); 
 
    } 
 
    </script>

и сценарий кошмар

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); 
 
    }

При запуске как node test.js

Открывает окно браузера и нажимает кнопку. Но не знаю, как нажать кнопку «ОК» в подтверждении, чтобы я мог перейти к следующему тесту. Ответ, который не требуется от кнопки «ОК», просто нужно нажать кнопку «ОК» в окне подтверждения.

всякая помощь очень ценится.

Благодаря

ответ

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); 
    } 
Смежные вопросы