Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const readline = require('readline-sync')
- const firefox = require('selenium-webdriver/firefox');
- const { Builder, until, By, Key } = require('selenium-webdriver')
- let isWindows = require('os').platform() == 'win32';
- let path = require('path');
- const geckoDriverPath = path.join( __dirname, `\\electronapps\\guardaSerie\\geckodriver${isWindows ? '.exe' : ''}`);
- let driver = null;
- async function parsePage(driver) {
- let rowLists = await driver.findElement(By.className('edittable_port')).findElement(By.tagName('tbody')).findElements(By.tagName('tr'))
- rowLists = rowLists.slice(3)
- let checkboxes = []
- for (let i = 0; i < rowLists.length; i++) {
- const row = rowLists[i];
- let fields = await row.findElements(By.tagName('td'))
- let checkbox = await fields[0].findElement(By.tagName('input'))
- checkboxes.push(checkbox)
- let checked = await checkbox.getAttribute('checked') == 'true'
- let appName = await fields[1].getText()
- let ipDest = await fields[2].getText()
- let protocol = await fields[3].getText()
- let pInt = await fields[4].getText()
- let pExt = await fields[5].getText()
- console.log(`[${i}] Attiva: ${checked}, AppName: ${appName}, Ip Dest: ${ipDest}, Protocol: ${protocol}, P.Int: ${pInt}, P.Ext: ${pExt}`)
- }
- return checkboxes
- }
- (async () => {
- let options = new firefox.Options()
- //options.headless()
- driver = await new Builder().forBrowser('firefox').setFirefoxService(new firefox.ServiceBuilder(geckoDriverPath)).setFirefoxOptions(options).build()
- await driver.get('http://192.168.1.1')
- await driver.wait(until.elementLocated(By.id('password')), 10000)
- await driver.wait(function () {
- return driver.executeScript('return document.readyState').then(function (readyState) {
- return readyState === 'complete';
- })
- });
- await driver.executeScript('document.getElementById(\'password\').value = \'MiciA510\'')
- await driver.wait(until.elementLocated(By.className('midarea6-1')), 10000)
- await driver.findElement(By.className('midarea6-1')).click()
- await driver.get('http://192.168.1.1/statoPortMapping.lp')
- await driver.wait(until.elementLocated(By.className('edittable_port')),10000)
- let checkboxes = await parsePage(driver)
- let cmd = ''
- while(cmd != 'exit') {
- cmd = readline.question('Cosa vuoi fare?\n - on/off <index>\n - reload\n - exit\n>> ')
- if(cmd == 'exit') {
- let btns = await driver.findElements(By.className('midarea6-1'))
- await btns[checkboxes.length].click()
- await driver.wait(until.elementLocated(By.id('wifi_submit_con')), 10000)
- await driver.findElement(By.id('wifi_submit_con')).click()
- await driver.wait(function () {
- return driver.executeScript('return document.readyState').then(function (readyState) {
- return readyState === 'complete';
- })
- });
- await driver.quit()
- process.exit(0)
- }
- cmd = cmd.split(' ')
- if (cmd[0] == 'on' || cmd[0] == 'off') {
- let index = +cmd[1]
- await driver.executeScript(`arguments[0].checked = ${cmd[0] == 'on' ? true : false}`,checkboxes[index])
- }
- }
- })().catch((err) => {
- console.log(err)
- driver.quit()
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement