簡體   English   中英

如何從其他js文件執行selenium node js腳本

[英]How can I execute selenium node js script from other js file

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

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 ,它有一個名為“Run script”的按鈕。
  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請求:
使用Ajax和Node.js的簡單按鈕單擊示例?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM