metrolog.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import time
  2. import threading
  3. from transport import *
  4. from selenium import webdriver
  5. from selenium.webdriver.common.keys import Keys
  6. from selenium.webdriver.common.by import By
  7. from selenium.webdriver.support.ui import WebDriverWait
  8. from selenium.webdriver.support import expected_conditions as ES
  9. class MetrologTester():
  10. USER = 'user'
  11. PASWORD = 'uchetmo'
  12. PGW_PORT_1 = 1001
  13. PGW_PORT_2 = 1002
  14. PGW_PORT_3 = 1003
  15. PGW_TEST_DATA = b'abcdefghijklmnopqrstuvwxyz'
  16. def __init__(self, ip):
  17. self.pgw_1 = PortgwTcp(ip, self.PGW_PORT_1)
  18. self.pgw_2 = PortgwTcp(ip, self.PGW_PORT_2)
  19. self.pgw_3 = PortgwTcp(ip, self.PGW_PORT_3)
  20. self.pgw_1_thread = threading.Thread(target=self.portgw_sender, args=(self.pgw_1, ))
  21. self.pgw_2_thread = threading.Thread(target=self.portgw_sender, args=(self.pgw_2, ))
  22. self.pgw_3_thread = threading.Thread(target=self.portgw_sender, args=(self.pgw_3, ))
  23. self.ip = ip
  24. self.driver = webdriver.Firefox()
  25. self.web_thread = threading.Thread(target=self.test_page_click)
  26. def connect(self):
  27. self.driver.get('http://' + self.ip)
  28. def login(self) -> bool:
  29. self.driver.find_element(By.ID, 'login').send_keys(self.USER)
  30. self.driver.find_element(By.ID, 'pass').send_keys(self.PASWORD)
  31. self.driver.find_element(By.CLASS_NAME, 'btn.btn-primary').click()
  32. time.sleep(2)
  33. return True if self.driver.title == "Состояние модема" else False
  34. def test_page_click(self):
  35. self.connect()
  36. while True:
  37. if self.login() == False:
  38. return
  39. for i in range(1):
  40. time.sleep(1)
  41. nav = self.driver.find_element(By.XPATH, "//ul[@id='nav']/li[2]/a").click()
  42. time.sleep(1)
  43. nav = self.driver.find_element(By.XPATH, "//ul[@id='nav']/li[3]/a").click()
  44. time.sleep(1)
  45. nav = self.driver.find_element(By.XPATH, "//ul[@id='nav']/li[1]/a").click()
  46. time.sleep(1)
  47. nav = self.driver.find_element(By.ID, 'logout').click()
  48. time.sleep(1)
  49. def start_web_clicker(self):
  50. self.web_thread.start()
  51. def start_pgw_sender(self, args):
  52. if len(args) != 0:
  53. if args[0] == 1:
  54. self.pgw_1_thread.start()
  55. if args[1] == 1:
  56. self.pgw_2_thread.start()
  57. if args[2] == 1:
  58. self.pgw_3_thread.start()
  59. else:
  60. self.pgw_1_thread.start()
  61. self.pgw_2_thread.start()
  62. self.pgw_3_thread.start()
  63. def portgw_sender(self, pgw):
  64. while True:
  65. pgw.open()
  66. pgw.write(self.PGW_TEST_DATA)
  67. pgw.read(len(self.PGW_TEST_DATA))
  68. pgw.close()
  69. time.sleep(0.1)
  70. def metrolog():
  71. robot = MetrologTester('192.168.31.230')
  72. robot.start_pgw_sender([0, 1, 1])
  73. robot.start_web_clicker()
  74. if __name__ == '__main__':
  75. metrolog()