3

我正在为我正在构建的单页向导样式表单编写一些自动化 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();
});

keyup 很重要,因为它会触发 ajax 调用来检查号码是否存在。当我查看 thing.png 图像时,没有显示验证错误。这意味着 keyup 没有被触发。

正在保存的图像:

在此处输入图像描述

如果 keyup 有效,则应该显示验证错误。

4

1 回答 1

3

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

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

顺便说一句,这是一个相当新的功能——它在1.7 版本中首次亮相。

于 2013-05-16T16:27:38.510 回答