JS测试:从CasperJS和PhanthomJS触发jQuery keypress事件

mar*_*oum 1 javascript testing jquery phantomjs casperjs

我的网页有一个输入键按下事件的监听器.我试图运行下面的casperjs代码来触发此事件,但没有成功.

虽然没有提示错误,但是(evaluate)函数返回true并且代码在我的chrome控制台上工作正常,应该向服务器发送请求的函数结果永远不会发生

casper.then(function(){
    var result = this.evaluate(function(term){
        var search_form_id = "#search-form";
        $(search_form_id).val(term);

        jQuery(search_form_id).trigger(jQuery.Event('keypress', {which: 13, keyCode: 13}));

        return true;
    }, 'Techcrunch');
    console.log(result);
});
Run Code Online (Sandbox Code Playgroud)

这是关于PhantomJS和jQuery事件的任何问题吗?

Art*_* B. 9

看起来,你不能keypress使用jQuery 触发事件.使用基础casper.page.sendEvent函数有一种解决方法.虽然有必要关注keypress将触发的元素.在以下示例中,我使用了keepFocussendKeys函数的选项.

var casper = require('casper').create();
casper.start("https://duckduckgo.com/");
casper.then(function() {
    this.sendKeys("#search_form_homepage input[name=q]", "casperjs", { keepFocus: true });
    this.capture("typed.png");
    this.page.sendEvent("keypress", this.page.event.key.Enter);
});

casper.waitForSelector("#links_wrapper");

casper.then(function() {
    this.capture("searched.png");
});

casper.run();
Run Code Online (Sandbox Code Playgroud)