2013-05-15 4 views
3

Я пишу несколько автоматических тестов ui для формы стиля макета страницы, которую я создаю. Я пытаюсь имитировать клавиатуру на конкретном элементе ввода, но метод .trigger jquery, похоже, не работает. Это то, что у меня есть.Почему в моем сценарии phantomjs не активируются события?

var page = require('webpage').create(); 
console.log('The default user agent is ' + page.settings.userAgent); 
page.settings.userAgent = 'SpecialAgent'; 



page.open('http://localhost:6543/signup', function (status) { 

    if (status !== 'success') { 
     console.log('Unable to access network'); 
    } 
    else { 

     var test = page.evaluate(function() { 

      //entersnumber 
      $('#number').val('2223443'); 
      //keyup triggers ajax call validating that number is not already in the db 
      $('#number').trigger('keyup'); 
      //the radio button is clicked 
      $('input:radio[name=salesBroker]').filter('[value=0]').click(); 

     }); 

     page.render('thing.png')   
    } 

    phantom.exit(); 
}); 

Ключ важен, потому что он вызовет вызов ajax, чтобы проверить, существует ли это число. Когда я смотрю на изображение thing.png, ошибка проверки не отображается. Это означает, что клавиатура не запускается.

изображение спасаемых:

enter image description here

Если KeyUp работает там должен быть показ ошибки проверки.

+0

Что произойдет, если вы используете собственный метод 'page.sendEvent', как описано [здесь] (https://code.google.com/p/phantomjs/issues/detail?id=760)? – raina77ow

+0

Я посмотрел на это и не пробовал, но событие keyup должно указывать на элемент #number dom. Представление page.sendEvent похоже на общие события, не предназначенные для dom. –

+0

Erm ... не может использоваться 'focus()' для таргетинга на этот элемент (как в примере по ссылке)? – raina77ow

ответ

3

Похоже, следует использовать несколько иной подход для инициирования клавиатуры события, связанные с: первым набором фокуса на определенный входе, а затем вызвать page.sendEvent метод с соответствующим Params:

page.evaluate(function() { 
    $('#number').val('2223443').focus(); 
}); 
page.sendEvent('keyup', someKey); 

Кстати, это довольно новая функция - она ​​дебютировала в version 1.7.

+0

Может ли запуск события выполняться в 'page.evaluate'. Мне нужно несколько раз взаимодействовать в песочнице, и я не хочу каждый раз выходить из 'page.evaluate'. – vinit

 Смежные вопросы

  • Нет связанных вопросов^_^