标签: casperjs

如何让Casper JS返回一个表示测试成功状态的退出代码?

我希望能够有一组Casper JS测试,并在成功时获得退出代码0,在错误或测试失败时获得非零(我想从java运行casper命令并确定测试是否通过).

我遇到的问题是始终返回退出代码0.以下是发生这种情况的示例测试:

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

casper.start('http://www.google.com', function() {
    this.test.assertEquals(true, casper.cli.options['value']);
});

casper.run(function() {
        casper.test.done(1);
});
Run Code Online (Sandbox Code Playgroud)

以下所有命令都会导致退出代码为0:

C:/casperjs/bin/casperjs test --value=true C:/Temp/simpletest.js
C:/casperjs/bin/casperjs test --value=false C:/Temp/simpletest.js
C:/casperjs/bin/casperjs --value=true C:/Temp/simpletest.js
C:/casperjs/bin/casperjs --value=false C:/Temp/simpletest.js
Run Code Online (Sandbox Code Playgroud)

如何调用Casper并确定测试是成功还是失败/错误?

casperjs

6
推荐指数
1
解决办法
6116
查看次数

如何防止CasperJS中的重定向?

我使用的是CapserJS 1.1.0-beta3和PhantomJS 1.8.2.

我调用一个响应重定向的URL(HTTP 302).PhantomJS自动跟随重定向,但在我的用例中,PhantomJS不应该遵循重定向.

重定向的调试输出如下所示:

[debug] [phantom] Navigation requested: url=https://foo.com/bar.jsp, type=Other, willNavigate=true, isMainFrame=true    
Run Code Online (Sandbox Code Playgroud)

如何配置PhantomJS/CapserJS不遵循重定向?

javascript http phantomjs casperjs

6
推荐指数
1
解决办法
3150
查看次数

CasperJS无法找到变量$

我试图在我的测试中注入jQuery但是我收到以下错误:

ReferenceError:找不到变量:$

它是一个ruby on rails应用程序,我正在尝试测试,在WEBrick上运行.这是所有代码:

var casper = require('casper').create({
    clientScripts: ['jquery-1.9.1.min.js']   
});

//make sure page loads
casper.start('http://127.0.0.1:3000', function() {
    this.test.assertTitle('EZpub', 'EZpub not loaded');
});

//make sure all 3 fridges are displayed
casper.then(function() {
    //get fridges
    var fridges = $('a[href^="/fridges/"]');
    this.test.assert(fridges.length == 3, 'More or less than 3 fridge links shown');
});

casper.run(function() {
    this.echo('Tests complete');
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery casperjs

5
推荐指数
1
解决办法
9126
查看次数

phantomjs/casperjs计算DOM元素

我想用'好'类来计算div元素的数量.我有选择器div.nice,但不知道使用哪个casperjs类/方法.

实际上有一个tester.assertElementCount方法,但是有什么东西可以简单地返回元素的数量吗?

javascript dom phantomjs casperjs

5
推荐指数
1
解决办法
5797
查看次数

使用带有casperjs的require返回"找不到模块"erorr

我正在关注用casperjs编写模块的文档,但是我收到了一个错误.

代码,直接来自文档:

// my module, stored in universe.js
// patching phantomjs' require()
var require = patchRequire(require);

// now you're ready to go
var utils = require('utils');
var magic = 42;
exports.answer = function() {
    return utils.format("it's %d", magic);
};
Run Code Online (Sandbox Code Playgroud)

和调用脚本:

var universe    = require("./universe");
var casper      = require("casper").create();


console.log(universe.answer());

casper.test.begin("Home Page", 1, function suite(test) {

});
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

casperjs test testStage.js
Test file: testStage.js
CasperError: Can't find module ./universe
  /usr/local/Cellar/casperjs/1/libexec/bin/bootstrap.js:214 in patchedRequire
  /Users/smosk/Google Drive/source/nest/testStage.js:1
FAIL CasperError: Can't find module …
Run Code Online (Sandbox Code Playgroud)

require casperjs

5
推荐指数
1
解决办法
1万
查看次数

如何关注CasperJS中的所有链接?

我在点击DOM中所有基于JavaScript的链接并保存输出时遇到问题.链接有表格

<a id="html" href="javascript:void(0);" onclick="goToHtml();">HTML</a>
Run Code Online (Sandbox Code Playgroud)

以下代码效果很好:

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

var fs = require('fs');

var firstUrl = 'http://www.testurl.com/test.html';

var css_selector = '#jan_html';

casper.start(firstUrl);

casper.thenClick(css_selector, function(){
    console.log("whoop");
});

casper.waitFor(function check() {
    return this.getCurrentUrl() != firstUrl;
}, function then() {
    console.log(this.getCurrentUrl());
    var file_title = this.getTitle().split(' ').join('_') + '.html';
    fs.write(file_title, this.getPageContent());
});

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

但是,如何使用"a"选择器,单击所有可用链接并保存内容?我不知道如何让clickWhileSelector从选择器中删除节点,如下所示:单击与选择器匹配的所有链接

javascript web-crawler hyperlink phantomjs casperjs

5
推荐指数
1
解决办法
8923
查看次数

SlimerJS忽略SSL错误

我在将SlimerJS纳入我的网络刮刀的道路上走得很远,而且我遇到了一个问题.我正在处理的一个网站上的SSL证书无效.在查看Slimer的SSL文档后,它们似乎不支持PhantomJS的ignore-ssl-errors选项.有没有解决的办法?浏览器中显示的SSL证书错误页面没有任何continue可以使Slimer单击的按钮.作为一个FYI,我使用CasperJS作为SlimerJS的包装器.

ssl casperjs slimerjs

5
推荐指数
1
解决办法
2313
查看次数

CasperJS click()不加载新的html

我正在尝试使用CasperJS' click()来跟踪在当前屏幕上生成模态的链接.当我查询正确的选择器并使用document.querySelector().click()它在浏览器控制台中单击它时,但即使我casper.evaluate()这样做它也不起作用.我找到了一个有类似问题的人,但他的问题仍然没有答案,我遇到了几乎相同的问题.casperjs按钮单击不导航到下一页 我正在使用的代码是

this.waitForSelector('div.talk-sharing__tools a.rate-button', function() {
    this.then(function() {
        this.evaluate(function() {
            document.querySelector('a.rate-button').click();
});
Run Code Online (Sandbox Code Playgroud)

我想刮页面http://www.ted.com/talks/uri_alon_why_truly_innovative_science_demands_a_leap_into_the_unknown

html javascript phantomjs casperjs

5
推荐指数
1
解决办法
2179
查看次数

为cmd启用颜色输出

我无法在我的cmd.exe(Windows 7,x64)上获得我的casperjs断言.我跟着ansicon.

如果我理解正确,如果ansicon安装了casperjs,则断言会自动着色

如果安装了ansicon,Windows用户将获得彩色输出.

有任何想法吗?

UPDATE

var casper = require('casper').create(),
    utils = require('utils'),
    http = require('http'),
    fs = require('fs'),
    colorizer = require('colorizer').create('Colorizer');

var xpath = require('casper').selectXPath;

casper.start('http://google.com/').then(function(response) {
    casper.echo('This is supposed to be green', 'INFO');
});

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

CMD:

C:\Users\itsme\Desktop>casperjs test test.js
Test file: test.js
This is supposed to be green

C:\Users\itsme\Desktop>casperjs test test.js
Run Code Online (Sandbox Code Playgroud)

windows cmd ansi-escape phantomjs casperjs

5
推荐指数
1
解决办法
2384
查看次数

当从在引导时调度的永久脚本调用时,节点的spawn()以静默方式失败

这有点儿麻烦.这个问题很可能与服务器有关,因此我的第一个问题是AskUbuntu.

我正在尝试使用crontab或rc.local或init.d来启动永久脚本.它将服务器连接到一个端口,我可以ping一些信息并让它为我运行一个无头浏览器.

也就是说,我似乎无法得到Node.js的回复spawn():

var CASPER_PATH = '/home/ubuntu/dev/casperjs/bin/casperjs'; // actual binary location, not a symlink
var SCRIPTS_PATH = '/home/custom_user/endpoints/server.js';

var fileName = req.body.source + '_' + req.body.type + '.coffee'; // looks like: mysource_my_scrape_type.coffee
var scrapeId = 'test_scrape';
var user = 'user123';
var pass = 'pass123';
if (fs.existsSync(SCRIPTS_PATH + fileName)) {
  // If file is in place, spawn casperjs
  var sP = spawn(CASPER_PATH, 
    [SCRIPTS_PATH + fileName, '--ssl-protocol=any', '--user='+user, '--scrapeId='+scrapeId, '--pass='+pass], 
    { detached: true }, 
    function (err, …
Run Code Online (Sandbox Code Playgroud)

javascript linux node.js phantomjs casperjs

5
推荐指数
1
解决办法
321
查看次数