标签: casperjs

使用casperjs处理jquery事件

我有一个网页,在加载dom后,javascript继续在页面上运行并在页面上添加元素.在运行所有javascript之后,我触发了一个jquery事件page.loaded,以便在运行所有我的javascripts之后对页面上的组件感兴趣可以这样做.

我试图使用casperjs/phantomjs自动测试这个网页,我想在jQuery页面加载事件被触发后才检查页面上的元素.我应该怎么做呢?

javascript phantomjs casperjs

3
推荐指数
1
解决办法
1830
查看次数

Casper --proxy不起作用

以下是使用http://whatismyipaddress.com/proxy-check检查IP地址的代码

var casper = require("casper").create(),
    utils = require('utils');

casper.userAgent('Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0');

casper.start("http://whatismyipaddress.com/proxy-check", function() {
  this.capture('0.png');
});

casper.on('remote.message', function(msg) {
    this.echo('Remote: ' + msg);
})

casper.run(function() {
  this.echo('End');

  //finish execution script 
  this.exit();  

});
Run Code Online (Sandbox Code Playgroud)

我键入casperjs --proxy="xxx.xxx.xxx.xxx:80" proxy.js 但截图正是我机器上的IP地址.

那么我怎么知道代理是坏的还是我的代码或命令行中出了什么问题呢?

proxy node.js web-scraping phantomjs casperjs

3
推荐指数
1
解决办法
7905
查看次数

使用CasperJS登录/注销Meteor应用程序

我正在尝试使用CasperJS登录Meteor应用程序.

以下是我的casper脚本的样子:

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

casper.start('http://localhost:3000/', function() {
    this.test.assertTitle('app', 'App title is as expected');
    this.test.assertExists('#login-sign-in-link', 'Sign in link exists');
    this.capture('step-1.png');
    this.click('a#login-sign-in-link');
    this.test.assertExists('#login-email', 'Email field found');
    this.test.assertExists('#login-password', 'Password field found');
    this.capture('step-2.png');
    this.evaluate(function (username, password) {
        document.querySelector('#login-email').value = username;
        document.querySelector('#login-password').value = password;
        }, {
            username: 'a@b.com',
            password: 'testtest'
        });
    this.capture('step-3.png');
    this.click('div#login-buttons-password');
    this.test.assertExists("a#login-name-link","Signed in");
    this.capture('step-4.png');
});

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

结果如下:

ubuntu:~/tmp/casper$ casperjs test meteor-login.js 
Test file: meteor-login.js                                                      
[info] [phantom] Starting...
[info] [phantom] Running suite: 2 steps
[debug] [phantom] opening …
Run Code Online (Sandbox Code Playgroud)

casperjs meteor

3
推荐指数
1
解决办法
791
查看次数

保存使用casperjs抓取网页时获得的表格数据

哪个是保存使用casperjs抓取网页时获得的表数据的最佳方法?

  1. 使用json对象并在序列化后将其存储为文件.

  2. 使用ajax请求到php然后将其存储在mysql数据库中.

javascript mysql json phantomjs casperjs

3
推荐指数
1
解决办法
4490
查看次数

如何使用CasperJS中的表单名称填写表单

我正在尝试填写表单的输入:

<form name="step_one_login_form" action="/" method="post">
  <input type="hidden" name="form_name" value="step_one_login_form">
  <input type="hidden" name="return_url" value="index.php?
  <div id="haveaccount" style="display:block;">
    <div class="panel_login">
      <div class="panel_login_row">
        <div class="panel_login_fieldname">
          <label for="login_checkout" class="cm-required cm-trim cm-email">Email:</label>
          <span class="panel_login_fieldabout">(Required)</span>
        </div>
      <div class="panel_login_field">
        **<input type="text" id="login_checkout" name="user_login" size="30" value=""class="panel_login_textbox">**
Run Code Online (Sandbox Code Playgroud)

由于没有给出表单的类或id,我不明白这样做的方法.

html forms casperjs

3
推荐指数
1
解决办法
6260
查看次数

在幽灵中运行'casperjs test'

所以我有一个在节点中运行的文件,它运行PhantomJS的本地副本,如下所示:

phantom.casperPath = 'node_modules/casperjs';
phantom.injectJs('node_modules/casperjs/bin/bootstrap.js');
var casper = require('casper').create({
    viewportSize: config.viewportSize
});

casper.test.begin('Runing tests here', 5, function suite(test) {
    // Tests here
});
Run Code Online (Sandbox Code Playgroud)

没有casper.test.begin()我的测试功能很好.我有正确的版本1.1.0,可以使用此测试套件,但我在我的控制台中收到以下错误:

CasperError: casper.test property is only available using the `casperjs test` command
Run Code Online (Sandbox Code Playgroud)

CasperJS文档也提到了这一点:http://docs.casperjs.org/en/latest/testing.html .我的问题是如何在上面的代码中使用此命令运行此Casper,以便我可以使用这些测试?

谢谢!

node.js phantomjs casperjs

3
推荐指数
1
解决办法
3170
查看次数

使用document.querySelectorAll获取CasperJS的textContent

我正在使用CasperJS自动填写在线表格.每当您尝试提交填写了包含无效数据的任何必填字段的表单时,每个包含无效数据的字段都会显示一条错误消息,提醒您问题所在.我想收集所有这些消息并将它们连接成一个 - 无论是通过数组还是其他方法对我来说都无关紧要.错误消息的CSS如下所示:

<span class="field-validation-error" data-valmsg-replace="true" data-valmsg-for="Name.Last">
    <span class="" for="Name_Last" generated="true">
        The Last Name field is required.
    </span>
</span>
Run Code Online (Sandbox Code Playgroud)

<span class="field-validation-error" data-valmsg-replace="true" data-valmsg-for="Address.City">
    <span class="" for="Address_City" generated="true">
        The City field is required.
    </span>
</span>
Run Code Online (Sandbox Code Playgroud)

在浏览器控制台中,我成功地做到了这一点:

var arr = document.querySelectorAll('.field-validation-error');
for (var i = 0; i < arr.length; i++) { 
    var err = arr[i]; console.log(err.textContent);
}
Run Code Online (Sandbox Code Playgroud)

它让我回复:

"The Last Name field is required."
"The City field is required."
Run Code Online (Sandbox Code Playgroud)

我打算在CasperJS中做同样的事情,但我无法得到相同的结果.这是我的代码到目前为止(一个更大的文件的片段,所以我不会发布我casper.start或任何东西):

var results = self.evaluate(function() {
    var arr =  document.querySelectorAll('.field-validation-error');
    return …
Run Code Online (Sandbox Code Playgroud)

javascript selectors-api phantomjs casperjs

3
推荐指数
1
解决办法
3816
查看次数

CasperJS脚本永远不会退出

我的CasperJS脚本永远不会停止执行.

var casper = require('casper').create();

casper.userAgent('Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36');

casper.start('https://www.google.co.in/',function(){    
  casper.wait(3000,function(){
    this.echo(this.getTitle());
  });
});
casper.run();
Run Code Online (Sandbox Code Playgroud)

windows cmd casperjs

3
推荐指数
1
解决办法
748
查看次数

在CasperJS中获取具有特定(数据)属性的每个元素

我正在尝试使用CasperJS测试页面.是否有可能获得包含属性数据-...的每个元素(段落)?之后,我需要将此属性与内部HTML进行比较,但我不知道该怎么做.

html javascript custom-data-attribute casperjs

3
推荐指数
1
解决办法
2521
查看次数

CasperJS清除输入字段

在填充之前有没有办法用CasperJS或PhantomJS清除输入字段?

我已经尝试过sendKeys('input_field', "data", clear:true);fill运行了函数,但是所有这些函数都只是附加了输入字段而不是之前清除它.

input phantomjs casperjs

3
推荐指数
1
解决办法
1486
查看次数