2017-10-13 185 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請求在服務器端執行所需的代碼:

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'); 
}); 

你也可以用在客戶端的Ajax請求發送POST要求:
Simple button click example with Ajax and Node.js?

+0

感謝很多人。你節省了我很多時間:) –