作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我已经按照以下方式创建了文件:
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');
}
我想做的是:
Run.js
时,它有一个名为“运行脚本”的按钮。Demo.js
中的自动化脚本。目前对我来说,上面的测试功能不起作用,无法在单击按钮时运行 Demo.js
。
错误
Uncaught ReferenceError: test is not defined
at HTMLButtonElement.onclick
最佳答案
您正在客户端调用函数 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?
关于javascript - 如何从其他 js 文件执行 selenium Node js 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46729787/
我是一名优秀的程序员,十分优秀!