App Automation
This article explains how to enable and set up Overwolf app automation in Node.js using ChromeDriver and selenium-webdriver / webdriverio.
Requirements:
- Download
chromedriver.exeand place it in a folder of your choice (i.e.C:/webdrivers).- Add that folder to your system's PATH:
- Start menu
- Type
Path - Click
Edit the system environment variables - Click
Environment Variables - Click on
Pathand thenEdit - Add your chosen folder to the list and click
OKon all windows
- Add that folder to your system's PATH:
- Run Overwolf with the command line flag
--enable-automation. - For the examples below: install and launch Replay HUD.
To run WebDriver with selenium-webdriver package:
Run
npm install selenium-webdriverin your node project.Install and launch your app.
Take note of your app's window title.
Create a driver instance according to the following example:
// ReplayHUD automation with selenium-webdriver
const { Builder, By, Key, until } = require("selenium-webdriver");
const chrome = require("selenium-webdriver/chrome");
const options = new chrome.Options();
options.options_["debuggerAddress"] = "localhost:54284"; // Overwolf Remote Debugger
const xpath = "/html/body/ng-include/div/div[5]/div[2]/div[1]/article[4]/div";
(async function example() {
let driver = await new Builder()
.forBrowser("chrome")
.setChromeOptions(options)
.build();
try {
// Find and switch to your app's window
const handles = await driver.getAllWindowHandles();
for (let handle of handles) {
await driver.switchTo().window(handle);
if ((await driver.getTitle()) === "Replay HUD") {
break;
}
}
// Enjoy
const element = await driver.wait(
until.elementLocated(By.xpath(xpath)),
30
);
await element.click();
} finally {
await driver.quit();
}
})();
To run WebDriver with webdriverio in Standalone Mode:
If you want to run
webdriverioin Testrunner Mode (and you likely do, if you're using this package for testing) you should check out its documentation. The configuration file (wdio.conf.js) should include the options used in the Standalone Mode example below.
Run
npm install webdriverioin your node project.Create a browser session according to the following example:
// ReplayHUD automation with webdriverio in Standalone Mode
const { remote } = require("webdriverio");
const xpath = "/html/body/ng-include/div/div[5]/div[2]/div[1]/article[4]/div";
(async () => {
const browser = await remote({
automationProtocol: "devtools",
browserName: "chrome",
capabilities: {
"goog:chromeOptions": {
debuggerAddress: "localhost:54284",
},
},
});
await browser.switchWindow("Replay HUD");
const button = await browser.$(xpath);
await button.waitForClickable({ timeout: 3000 });
await button.click();
await browser.deleteSession();
})();