【问题标题】:JS Testing: Trigger jQuery keypress event from CasperJS and PhanthomJSJS 测试:从 CasperJS 和 PhanthomJS 触发 jQuery 按键事件
【发布时间】:2014-05-12 12:11:06
【问题描述】:

我的网页有一个输入按键事件的侦听器。我正在尝试运行下面的 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);
});

关于 PhantomJS 和 jQuery 事件有什么问题吗?

【问题讨论】:

  • 我尝试了类似的操作(使用 'enter' 按键,也使用 'Down')但没有成功。这可能是一个幻像问题。

标签: javascript jquery testing phantomjs casperjs


【解决方案1】:

看起来,您无法使用 jQuery 触发 keypress 事件。有一个使用底层casper.page.sendEvent 函数的解决方法。尽管有必要关注将触发keypress 的元素。在下面的示例中,我使用了sendKeys 函数的keepFocus 选项。

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

【讨论】:

  • 如果您在使用 https 或使用 https 资源的网站时遇到问题,请参阅此问题PhantomJS failing to open HTTPS site,尤其是this answer
  • B,在我的情况下,上述解决方案不起作用。下面是我的代码 casper.then(function() { this.sendKeys("#command-prompt", "casperjs", { keepFocus: true }); this.capture("typed.png"); this.page.sendEvent ("keypress", this.page.event.key.Enter); });
  • @Prateek.Naik 你注册到各种错误事件了吗?
  • 是的...我已经注册了
  • 恐怕我帮不了你。您可以提出一个新的详细问题。您应该包含一个可运行的示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多