如何从其他js文件执行selenium node.js脚本

3

我已按照以下方式创建了文件:

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
1个回答

5
你正在客户端调用函数test,但该函数是在服务器端定义的。
你可以在客户端创建一个表单,在点击后向服务器发送POST请求。然后在服务器端处理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请求:
使用Ajax和Node.js的简单按钮单击示例?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接