2016-12-28 7 views
1

私はいくつかのイベントを実行したいと思います。ウェブサイトのクリック私はjavascript(またはchrome extension)を使ってchromeで行うことができますが、chromeを開かずにサーバーサイドコードを使用することは可能ですか? APIは提供されません。それは掻き立てるのではなく、ある種の行動を起こす。APIを使用してnode.jsでブラウザアクションを実行

答えて

1

NodeJSは、Google V8 engineを使用してJavaScriptコードを解釈します。ブラウザ環境では実行されないため、DOMやイベントの処理が欠けています。しかし、実際にはmock-browserパッケージを使ってNodeJS環境でブラウザをモックすることができます。いくつかの方法(例えばgetComputedStyle)はまだ動作しませんよう

const MockBrowser = require('mock-browser/lib/MockBrowser') 

const mockBrowser = new MockBrowser() 

global.window = mockBrowser.getWindow() 
global.document = mockBrowser.getDocument() 
global.navigator = mockBrowser.getNavigator() 

しかし、あなたは、このアプローチには注意する必要があります。

DOMとイベントをサーバー側で使用する理由を再検討する必要があります。

PhantomJS:ヘッドレスブラウザNodeJS

PhantomJSのためにそれがブラウザをシミュレートすることができますフル機能のブラウザをご提供など、こする、テストのために使用されているNodeJSためheadless browserです。あなたがウェブサイトをこすりしたい場合

をこするためCasperJSを使用して

、あなたは自身がPhantomJSを使用していますCasperJSと呼ばれるライブラリを使用することができます。例:あなたはそれがイベントをトリガする唯一の方法であるため、サーバーside.` にDOMやイベントを利用したい理由

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

function getLinks() { 
// Scrape the links from top-right nav of the website 
    var links = document.querySelectorAll('ul.navigation li a'); 
    return Array.prototype.map.call(links, function (e) { 
     return e.getAttribute('href') 
    }); 
} 

// Opens casperjs homepage 
casper.start('http://casperjs.org/'); 

casper.then(function() { 
    links = this.evaluate(getLinks); 
}); 

casper.run(function() { 
    for(var i in links) { 
     console.log(links[i]); 
    } 
    casper.done(); 
}); 

+0

'たぶん、あなたは再考する必要がありますか? –

+0

@Nately Jamerson:何のイベントをトリガーしますか?なぜサーバー側にDOMが必要ですか? – bman

+0

私はリンクの束を持って、私はサイト上の特定のボタンをクリックしてトリガーしたい、あなたはDOMをトリガーせずにそれを行うことができますか? APIは提供されません。 –

関連する問題