javascript - 如何从其他 js 文件执行 selenium Node js 脚本

标签 javascript node.js selenium selenium-webdriver

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

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

最佳答案

您正在客户端调用函数 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/

相关文章:

javascript - 如何让 Aurelia 验证工作?

javascript - 通过JS和Jquery获取CSS元素值

java - 在 TestNG 中运行多个类

javascript - Protractor 中的自定义浏览器操作

javascript - 如何使用 Express.js 进行正确的 JSON 后验证?

JavaScript:禁用 Selenium ChromeDriver 中的图像

Javascript 随机显示/隐藏不起作用

php重定向 header 未通过ajax调用发送

javascript - 如何在 Node.js 中从数组中的值创建对象?

node.js - Nodejs 在特定时间后删除上传的文件