2017-10-13 11 views
3

からセレンノードjsのスクリプトを実行することができますどのように私は次のとおりのファイルを作成しました:私はjsの他のファイル

Demo.js

var webdriver = require('selenium-webdriver');  

var driver = new webdriver 
    .Builder() 
    .withCapabilities(webdriver.Capabilities.chrome()) 
    .build(); 

driver.get('http://www.google.com'); 
driver.findElement(webdriver.By.name('q')).sendKeys('simple programmer'); 
driver.findElement(webdriver.By.name('btnK')).click(); 
driver.quit(); 

Run.js

var express = require('express'); 

var app = express(); 
app.get('/', function (req, res) { 
    res.send('<button type="button" onclick="test();">Run Script</button>'); 
}); 

var server = app.listen(8081, function() { 
    var host = server.address().address; 
    var port = server.address().port; 
    console.log("Example app listening at http://%s:%s", host, port); 
}); 

function test() { 
    var fork = require('child_process').fork; 
    var child = fork('./Demo'); 
} 

私がしたいことは:

  1. ファイルRun.jsを実行すると、「スクリプトの実行」というボタンがあります。
  2. そのボタンをクリックするとすぐに、Demo.jsに格納されている自動化スクリプトを実行する必要があります。

現在、上記のテスト機能は動作しておらず、ボタンをクリックしてDemo.jsを実行できません。

エラー

Uncaught ReferenceError: test is not defined 
    at HTMLButtonElement.onclick 

答えて

4

あなたは、クライアント側の機能testを呼び出しているが、機能は、サーバー側で定義されています。

クライアント側で、クリックすると投稿要求をサーバーに送信するフォームを作成できます。次に、目的のコードを実行するために、サーバー側でPOST要求を処理する:あなたは、クライアント側のAjaxリクエストでPOSTリクエストを送ることができ

app.get('/', function (req, res) { 
    res.send(
    '<form action="/run" method="POST">' + 
    ' <input type="submit" name="run" value="Run Script" />' + 
    '</form>'); 
}); 

app.post('/run', function (req, res) { 
    var fork = require('child_process').fork; 
    var child = fork('./Demo'); 
    res.send('done'); 
}); 


Simple button click example with Ajax and Node.js?

+0

おかげでたくさんの男を。あなたは私の多くの時間を保存:) –

関連する問題