2017-10-13 186 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

感谢很多人。你节省了我很多时间:) –