CheshireCaat / bas-remote-node

NodeJS library, which allows you to automate Google Chrome browser.
MIT License
28 stars 7 forks source link
automation bas bas-client bas-remote bas-remote-client bas-remote-control bot bot-framework browser browserautomationstudio cef chromium desktop grabber ide imacros macros poster visual-programming-language windows

bas-remote-node

npm version GitHub issues License: MIT

bas-remote-node - NodeJS library, which allows you to automate Google Chrome browser.

In order to make it possible, BrowserAutomationStudio application is used. bas-remote-node allows you to call and control execution of functions created in BAS. Consider following example, you have a BAS function, which executes specified Google search query and returns result as a list of urls. Using this library, you can call that function in any NodeJS application and obtain result. You can distribute applications written with bas-remote-node library as well.

BrowserAutomationStudio

BAS - is application that allows you to automate any activities in Google Chrome browser with a help of visual programming and without knowing of any programming language. You can think of it as IDE created especially for browser automation:

Check following link for more info:

https://bablosoft.com/shop/BrowserAutomationStudio

Installation

npm install --save bas-remote-node

Quick start

Following code will search for cats query in Google and output result into console. You can just copy paste this code and run it.

const BasRemoteClient = require('bas-remote-node');

async function main() {
  //Set script name, and optionally auth details (login, password)
  const options = {
    scriptName: 'TestRemoteControl' /* or 'YourScriptName' */,
  };

  //Create client
  const scriptClient = new BasRemoteClient(options);

  //Start application, this may take some time
  await scriptClient.start();

  //Set parameters for function
  const scriptParams = {
    Query: 'cats',
  };

  //Run function and wait for result
  //Following function will return list of strings
  const result = await scriptClient.runFunction('GoogleSearch' /* or 'YourFunctionName' */, scriptParams);

  //Iterate and output results
  result.forEach(link => {
    console.log(link);
  });

  await scriptClient.close();
}

main();

Checkout wiki for more examples.

Running custom code

Previous example used TestRemoteControl project and GoogleSearch function defined in it. In most cases you want to use your own projects and functions. In order to do it:

After project with function is prepared, you can use it from NodeJS. In order to do that, change script and function name in example above.

How it works

Following diagram will explain project architecture:

Running custom code section explains how to prepare your project and upload it into the cloud. Portable BAS instance is downloaded and started automatically, it is also closed automatically when BasRemoteClient gets closed. Folder, where portable BAS instance is located by default is data folder relative to executable. It can be customized by using options.workingDir setting.

Project example

You can use TestRemoteControl project in order to test bas-remote-node library. It is already uploaded into the cloud and can be used without authentication. List of available functions:

Project source code can be downloaded here

License

bas-remote-node has MIT license.

You can distribute applications using bas-remote-node library, including commercial, to user, who don't have BAS premium subscription without any fees.

In order to create project with custom functions you need to have a BAS premium subscription.

In other words, only developers must have BAS premium subscription, not users.