WebdriverIO: Как запустить скрипт загрузки файла AutoIt .exe - PullRequest
0 голосов
/ 15 октября 2019

Я использую WebdriverIO для запуска загрузки файла .exe, созданного с помощью AutoIt .

Я запускаю скрипт внутри команды browser.execute. Файл должен запускаться с локального диска и запускаться в браузере Chrome. Вот код:

this.open("https://smallpdf.com/word-to-pdf");
this.SubmitClick("//div[@class='l0v3m7-3 hIetmU']");
this.BrowserSleep(2000);
scr.runAutoItScript('C:\\test\\desktopApp\\autoit', 'fileUpload.exe')


//scr have the child process:
const { execFile } = require('child_process').execFile;
module.exports = {
  runAutoItScript(pathToScript, scriptName) {
    console.info(`\n> Started execution of ${pathToScript} / ${scriptName} ...`);

    execFile(`${pathToScript}/${scriptName}`, (error, stdout, stderr) => {
      if (error) {
        throw error;
      } else {
        console.info(`\n> Finished execution of ${scriptName}! | Output: ${stdout}`);
      }
    });
  }
}

1 Ответ

0 голосов
/ 15 октября 2019

Я помню, как делал что-то подобное в прошлом, и я использовал команду NodeJS child_process.execFile . Документация на child_process тяжелая, так что читайте внимательно.

В итоге вы должны получить что-то вроде:

const execFile = require('child_process').execFile;

let runAutoItScript = function(pathToScript, scriptName) {
  console.info(`\n> Started execution of ${scriptName} ...`);

  execFile(`${pathToScript}/${scriptName}`, (error, stdout, stderr) => {
    if (error) {
      throw error;
    } else {
      // > do something with the script output <
      console.info(`\n> Finished execution of ${scriptName}! | Output: ${stdout}`);
    }
  });
}

runAutoItScript('/this/is/a/valid/path', 'AwesomeScript.exe');

Следующим шагом будет минимизацияи заставьте его работать внутри browser.execute call.

Вы можете найти в сети множество примеров child_process , просто используйте ресурсы, доступные для запуска простейшего скрипта. Развивайся оттуда.

...