虽然我已经使用CasperJS一段时间了,并依赖控制台日志进行调试.我想知道是否有任何IDE支持CasperJS一步一步的调试或有其他方式(远程调试)介入CasperJS代码?有人成功完成了吗?任何信息都会有所帮助.
谢谢,
如何检查casperjs脚本中的对象?
我试过console.log(arguments)但它只打印[object Arguments]或[object Object].
我希望得到类似的结果:{'firstparam':'value'...}
就像在Javascript控制台或Node.js中一样......
也许这是一个Phantomjs的问题,我不确定......
我知道我可以用:
casper.test.assertExists(#selector);
Run Code Online (Sandbox Code Playgroud)
但我想实际存储它是否存在于布尔变量中.
就是这样的:
var exists = SelectorExists(#selector);
Run Code Online (Sandbox Code Playgroud) 我想下载一个CSV文件,它是通过POST请求点击按钮生成的.我在casperJs和phantomJS论坛上进行了最好的研究并空手而归.在像firefox这样的普通浏览器中,在发布请求后会出现浏览器下载对话窗口.如何在PhantomJS中处理这种情况
TTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
Content-disposition: attachment;filename=ExportData.csv
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Fri, 19 Apr 2013 23:26:40 GMT
Content-Length: 65183
Run Code Online (Sandbox Code Playgroud) 以下是我拥有的登录表单的hlml
<div class="login_area_user">
<form method="post" action="https://www.tradus.com/login?dest_url=https://www.tradus.com/cart/select-address" id="user-login">
<input type="hidden" value="1" name="form_submit">
<h3 style="display:inline-block;">Already a Member</h3>
<p id="login-main-center-right-descp">You can use tradus login id and password</p>
<div class="login-row">
<label class="colorBlack">Email / Login*</label>
<input class="login-field" type="text" name="name" id="edit-namepopup">
</div> <!-- [/login-row] -->
<div class="login-row">
<label>Password</label>
<input class="login-field" type="password" id="edit-passpopup" name="pass">
</div> <!-- [/login-row] -->
<div class="login-row">
<a class="forgotPassword" href="/forgot_password">Forgot your password?</a>
<!--input type="checkbox" name="remember" /><span>Remember me</span-->
</div>
<div class="login-row">
<input class="login-button" value="Login" type="submit">
</div>
<input type="hidden" name="op" value="Log in">
</form>
</div>
Run Code Online (Sandbox Code Playgroud)
我使用以下代码登录:
this.fill('form#user-login', …Run Code Online (Sandbox Code Playgroud) 在运行测试时.
FAIL 35 tests executed in 16.806s, 35 passed, 0 failed, 2 dubious, 0 skipped.
Run Code Online (Sandbox Code Playgroud)
"可疑"意味着什么以及如何看待哪个断言或测试用例是可疑的?
可以PhantomJS使用的替代BeautifulSoup?
我正在尝试搜索Etsy并访问所有链接.在Python中,我知道如何做到这一点(使用BeautifulSoup)但今天我想知道我是否可以使用PhantomJS做同样的事情.我没有走得太远.
该脚本应在Etsy上搜索"hello kitty"并返回所有产品
<a class="listing-thumb" href=...></a>并在控制台中打印.理想情况下,我稍后会访问它们并获取我需要的信息.现在它只是冻结了.有任何想法吗?
var page = require('webpage').create();
var url = 'http://www.etsy.com/search?q=hello%20kitty';
page.open(url, function(status){
// list all the a.href links in the hello kitty etsy page
var link = page.evaluate(function() {
return document.querySelectorAll('a.listing-thumb');
});
for(var i = 0; i < link.length; i++){ console.log(link[i].href); }
phantom.exit();
});
Run Code Online (Sandbox Code Playgroud)
我玩过CasperJS玩具,可能更适合这个.
我有一个CasperJS脚本,可以从一个网页上删除评级和日期.现在我想从同一网站下的多个页面中抓取相同的数据.如何在给定此代码的情况下遍历不同的子页面:
var ratings = [];
var dates = [];
var casper = require('casper').create({
pageSettings: {
loadImages: false,
loadPlugins: false
},
logLevel: "debug",
verbose: true
});
var fs = require('fs');
function getRatings() {
var ratings = document.querySelectorAll('#BVRRRatingOverall_Review_Display > div.BVRRRatingNormalImage > img');
return Array.prototype.map.call(ratings, function(e) {
return e.getAttribute('title');
});
}
function getDate() {
var dates = document.querySelectorAll('#BVSubmissionPopupContainer > div.BVRRReviewDisplayStyle5Header > div.BVRRReviewDateContainer > span.BVRRValue.BVRRReviewDate');
return Array.prototype.map.call(dates, function(e) {
return e.innerHTML;
});
}
casper.start('http://www.t-mobile.com/cell-phones/samsung-galaxy-s-5.html?bvrrp=9060/reviews/product/1/598aea53-16d0-4c12-b53a-105157092c52.htm', function(){
this.echo('hi');
});
casper.then(function() {
ratings = this.evaluate(getRatings);
dates = …Run Code Online (Sandbox Code Playgroud) 我正在使用CasperJS检查一些站点并将JSON数据写入文件.文件应写入public/data文件夹.但是当我试图casperjs 在我的项目目录(例如我的主目录)之外调用时,它直接写入文件~/public/data,而不是在我的项目目录中.
我该怎么解决这个问题?我还没有找到如何获取__dirname或__filename.
casperjs ×10
phantomjs ×5
javascript ×4
debugging ×1
fill ×1
foreach ×1
loops ×1
web-scraping ×1