我希望能够有一组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并确定测试是成功还是失败/错误?
我使用的是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不遵循重定向?
我试图在我的测试中注入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) 我想用'好'类来计算div元素的数量.我有选择器div.nice,但不知道使用哪个casperjs类/方法.
实际上有一个tester.assertElementCount方法,但是有什么东西可以简单地返回元素的数量吗?
我正在关注用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) 我在点击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从选择器中删除节点,如下所示:单击与选择器匹配的所有链接
我在将SlimerJS纳入我的网络刮刀的道路上走得很远,而且我遇到了一个问题.我正在处理的一个网站上的SSL证书无效.在查看Slimer的SSL文档后,它们似乎不支持PhantomJS的ignore-ssl-errors选项.有没有解决的办法?浏览器中显示的SSL证书错误页面没有任何continue可以使Slimer单击的按钮.作为一个FYI,我使用CasperJS作为SlimerJS的包装器.
我正在尝试使用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
我无法在我的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) 这有点儿麻烦.这个问题很可能与服务器有关,因此我的第一个问题是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)