为什么不在我的phantomjs脚本中触发事件?

时间:2013-05-15 18:51:19

标签: javascript phantomjs ui-testing

我正在为我正在构建的单页向导样式表单编写一些自动ui测试。我试图模拟特定输入元素的键,但.trigger jquery方法似乎不起作用。这就是我所拥有的。

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

如果密钥组件工作,则应显示验证错误。

1 个答案:

答案 0 :(得分:3)

看起来应该使用稍微不同的方法来触发与键盘相关的事件:首先将焦点设置在特定输入上,然后使用相关参数调用page.sendEvent方法:

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

顺便说一下,这是一个相当新的功能 - 它在version 1.7中首次亮相。