Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.38 KB | None | 0 0
  1. const readline = require('readline-sync')
  2. const firefox = require('selenium-webdriver/firefox');
  3. const { Builder, until, By, Key } = require('selenium-webdriver')
  4. let isWindows = require('os').platform() == 'win32';
  5.  
  6. let path = require('path');
  7. const geckoDriverPath = path.join( __dirname, `\\electronapps\\guardaSerie\\geckodriver${isWindows ? '.exe' : ''}`);
  8.  
  9. let driver = null;
  10.  
  11. async function parsePage(driver) {
  12. let rowLists = await driver.findElement(By.className('edittable_port')).findElement(By.tagName('tbody')).findElements(By.tagName('tr'))
  13. rowLists = rowLists.slice(3)
  14. let checkboxes = []
  15. for (let i = 0; i < rowLists.length; i++) {
  16. const row = rowLists[i];
  17. let fields = await row.findElements(By.tagName('td'))
  18. let checkbox = await fields[0].findElement(By.tagName('input'))
  19. checkboxes.push(checkbox)
  20. let checked = await checkbox.getAttribute('checked') == 'true'
  21. let appName = await fields[1].getText()
  22. let ipDest = await fields[2].getText()
  23. let protocol = await fields[3].getText()
  24. let pInt = await fields[4].getText()
  25. let pExt = await fields[5].getText()
  26. console.log(`[${i}] Attiva: ${checked}, AppName: ${appName}, Ip Dest: ${ipDest}, Protocol: ${protocol}, P.Int: ${pInt}, P.Ext: ${pExt}`)
  27. }
  28. return checkboxes
  29. }
  30.  
  31.  
  32. (async () => {
  33. let options = new firefox.Options()
  34. //options.headless()
  35. driver = await new Builder().forBrowser('firefox').setFirefoxService(new firefox.ServiceBuilder(geckoDriverPath)).setFirefoxOptions(options).build()
  36. await driver.get('http://192.168.1.1')
  37. await driver.wait(until.elementLocated(By.id('password')), 10000)
  38. await driver.wait(function () {
  39. return driver.executeScript('return document.readyState').then(function (readyState) {
  40. return readyState === 'complete';
  41. })
  42. });
  43. await driver.executeScript('document.getElementById(\'password\').value = \'MiciA510\'')
  44. await driver.wait(until.elementLocated(By.className('midarea6-1')), 10000)
  45. await driver.findElement(By.className('midarea6-1')).click()
  46. await driver.get('http://192.168.1.1/statoPortMapping.lp')
  47. await driver.wait(until.elementLocated(By.className('edittable_port')),10000)
  48.  
  49. let checkboxes = await parsePage(driver)
  50. let cmd = ''
  51. while(cmd != 'exit') {
  52. cmd = readline.question('Cosa vuoi fare?\n - on/off <index>\n - reload\n - exit\n>> ')
  53. if(cmd == 'exit') {
  54. let btns = await driver.findElements(By.className('midarea6-1'))
  55. await btns[checkboxes.length].click()
  56. await driver.wait(until.elementLocated(By.id('wifi_submit_con')), 10000)
  57. await driver.findElement(By.id('wifi_submit_con')).click()
  58. await driver.wait(function () {
  59. return driver.executeScript('return document.readyState').then(function (readyState) {
  60. return readyState === 'complete';
  61. })
  62. });
  63. await driver.quit()
  64. process.exit(0)
  65. }
  66. cmd = cmd.split(' ')
  67. if (cmd[0] == 'on' || cmd[0] == 'off') {
  68. let index = +cmd[1]
  69. await driver.executeScript(`arguments[0].checked = ${cmd[0] == 'on' ? true : false}`,checkboxes[index])
  70. }
  71. }
  72. })().catch((err) => {
  73. console.log(err)
  74. driver.quit()
  75. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement