2012.10.23
社内勉強会
PhantomJSたん
// fetch_pxgrid_member.js
var webpage = require('webpage');
var page = webpage.create();
page.onConsoleMessage = function(msg) {
console.log(msg);
};
page.open('http://www.pxgrid.com/', function(status) {
page.evaluate(function() {
$('.mod-staffs h3').each(function() {
console.log($(this).text());
});
});
phantom.exit();
});
phantomjsコマンドでスクリプトを実行
$ phantomjs fetch_pxgrid_member.js
中村 享介(なかむら きょうすけ)
高津戸 壮(たかつど たけし)
小山田 晃浩(おやまだ あきひろ)
外村 和仁(ほかむら かずひと)
外村 奈津子(そとむら なつこ)
德田 和規(とくだ かずのり)
// fetch_pxgrid_menu.js
...
page.open('http://www.pxgrid.com/', function(status) {
page.evaluate(function() {
console.log($('nav .current').text()); //=> ホーム
$('a[href=#service]').click();
setTimeout(function() {
console.log($('nav .current').text()); //=> 業務案内
}, 1000);
});
});
// fetch_pxgrid_menu.js
var webpage = require('webpage');
var page = webpage.create();
page.open('http://www.pxgrid.com/#corporate', function(status) {
page.render('capture.png');
phantom.exit();
});
さすがphantomJS!おれたちに(ry
$.fn.rollover = function() {
return this.each(function() {
var $img = $(this);
var src = $img.attr('src');
var src_on = src.replace(/_off\.(\w+)$/, '_on.$1');
$img.bind('mouseenter', function() {
$img.attr('src', src_on);
});
$img.bind('mouseleave',function() {
$img.attr('src', src);
});
});
};
describe('jquery.rollover', function() {
var $img;
var off = '../example/menu01_off.png';
var on = '../example/menu01_on.png';
beforeEach(function() {
$img = $('<img>').attr('src', off).rollover();
expect($img.attr('src')).to.be(off);
});
it('mouseenterで_offが_onになること', function() {
$img.trigger('mouseenter');
expect($img.attr('src')).to.be(on);
});
it('mouseleaveで_onが_offになること', function() {
$img.trigger('mouseenter');
expect($img.attr('src')).to.be(on);
$img.trigger('mouseleave');
expect($img.attr('src')).to.be(off);
});
});
以下のYAMLを.travis.ymlという名前でgithubのリポジトリにおいてpushするだけ
script: phantomjs test/lib/mocha-phantomjs.coffee test/index.html