CasperJS,测试页面没有完全加载

时间:2014-10-13 19:31:21

标签: phantomjs casperjs

我是casperjs的新手,我想测试此页面的下拉列表: http://www.spareka.fr/pieces_detachees_accessoires_electromenager

元素位于页面的右上角(" Quel类型d'服饰?")。 所以,我运行这个脚本:

...
this.fillSelectors("form#search_form_4", {
  ...
  ...
});
...

但我的shell显示此错误:"找不到表单" 我查了一下,选择器很好。所以,我在脚本的开头捕获了页面,我注意到我的页面无法加载每个元素(带有id&#34的表单; search_form_4"不可见)。

我认为我的页面需要时间加载,所以我使用this.wait就像这样:

...
this.capture("screen01.png");
this.wait(100000, function(){
  this.capture("screen02.pbg");
});
...

但最后,screen01显示的内容与screen02相同。 当我使用CasperJS时,我不明白为什么页面不会完全加载:/你能帮助我吗?

编辑: 我的日志:

  

asus4 @ asus4-VirtualBox~ / Bureau / tests casper / test $ sudo casperjs script_test.js
  [info] [幻影]开始......
  [info] [幻影]跑步套房:2步骤
  [debug] [幻影]打开网址:http://www.spareka.fr/piece_detachees_accessoires_electromenager,HTTP GET
  [debug] [phantom]导航请求:url = http://www.spareka.fr/piece_detachees_accessoires_electromenager,type = Other,willNavigate = true,isMainFrame = true
  [debug] [幻影]网址更改为" http://www.spareka.fr/piece_detachees_accessoires_electromenager"
  [debug] [phantom]导航请求:url = http://googleads.g.doubleclick.net/pagead/viewthroughconversion/1009678515/?random=1413232851719&cv=7&fst=1413232851719&num=1&fmt=1&guid=ON&u_h=768&u_w=1024&u_ah=768&u_aw=1024&u_cd=32&u_his=1&u_tz=120&u_java=false&u_nplug=0&u_nmime=0&frm=0&url=http://www.spareka.fr/piece_detachees_accessoires_electromenager,type = Other,willNavigate = true,isMainFrame = false
  [debug] [phantom]导航请求:url = http://www.google.com/ads/user-lists/1009678515/?fmt=1&num=1&cv=7&frm=0&url=http://www.spareka.fr/piece_detachees_accessoires_electromenager&random=4196938409,type = Other,willNavigate = true,isMainFrame = false
  [debug] [phantom]导航请求:url = http://www.google.fr/ads/user-lists/1009678515/?fmt=1&num=1&cv=7&frm=0&url=http://www.spareka.fr/piece_detachees_accessoires_electromenager&random=4196938409&ipr=y,type = Other,willNavigate = true,isMainFrame = false
  [debug] [phantom]成功注入Casper客户端实用程序
  [info] [幻影]步骤匿名2/2 http://www.spareka.fr/piece_detachees_accessoires_electromenager(HTTP 200)
  [debug] [phantom]捕获页面到/ home / asus4 / Bureau / tests casper / test / screen01.png
  [info] [幻影]捕获保存到/ home / asus4 / Bureau / tests casper / test / screen01.png
  [info] [幻影]步骤匿名2/2:在3227ms完成   [info] [幻影] Step _step 3/3 http://www.spareka.fr/piece_detachees_accessoires_electromenager(HTTP 200)
  [info] [幻影] Step _step 3/3:在3228ms完成   [info] [幻影] wait()等待10000ms完成   [debug] [phantom]捕获页面到/ home / asus4 / Bureau / tests casper / test / screen02.png
  [info] [幻影]捕获保存到/ home / asus4 / Bureau / tests casper / test / screen02.png
  CasperError:填写表单时遇到的错误:找不到表单
  /home/asus4/Bureau/dev/casperjs/modules/casper.js:805在fillForm中
  /home/asus4/Bureau/dev/casperjs/modules/casper.js:880填充选择器
  / home / asus4 / Bureau / tests casper / test / script_test.js:28
  /home/asus4/Bureau/dev/casperjs/modules/casper.js:2035 in _check

我的代码:

var casper = require("casper").create({
  verbose: true,
  logLevel: "debug"
});

casper.start("http://www.spareka.fr/piece_detachees_accessoires_electromenager", function(){


//this.echo(this.getHTML('body'));

  this.on('remote.message', function(msg){
    this.echo("remote.message : " + msg);
  });
  this.on('page.error', function(msg, trace){
    this.echo("Error:   " + msg, "ERROR");
    this.echo("file:    " + trace[0].file, "WARNING");
    this.echo("line:    " + trace[0].line, "WARNING");
    this.echo("function:    " + trace[0]["function"], "WARNING");
    errors.push(msg);
  });

  this.capture("screen01.png");
  this.wait(10000, function(){
    this.capture("screen02.png");
    this.fillSelectors("form#search_form_4", {
  //'input[id="#finalProductType"]':    'Appareil à Fondue',
  //'input[id="#manufacturer"]':        'TEFAL',
    });
  });

1 个答案:

答案 0 :(得分:1)

您应该使用"form#search-form-4"代替。

用破折号替换下划线。我检查了你提到的页面,它有一个id =" search-form-4"的表格。