metrolog.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. WEB_TIMEOUT = 0.5
  17. def __init__(self, ip):
  18. self.pgw_1 = PortgwTcp(ip, self.PGW_PORT_1)
  19. self.pgw_2 = PortgwTcp(ip, self.PGW_PORT_2)
  20. self.pgw_3 = PortgwTcp(ip, self.PGW_PORT_3)
  21. self.pgw_1_thread = threading.Thread(target=self.portgw_sender, args=(self.pgw_1, ))
  22. self.pgw_2_thread = threading.Thread(target=self.portgw_sender, args=(self.pgw_2, ))
  23. self.pgw_3_thread = threading.Thread(target=self.portgw_sender, args=(self.pgw_3, ))
  24. self.ip = ip
  25. self.driver = webdriver.Firefox()
  26. self.web_thread = threading.Thread(target=self.test_page_click)
  27. def connect(self):
  28. self.driver.get('http://' + self.ip)
  29. def login(self) -> bool:
  30. self.driver.find_element(By.ID, 'login').send_keys(self.USER)
  31. self.driver.find_element(By.ID, 'pass').send_keys(self.PASWORD)
  32. self.driver.find_element(By.CLASS_NAME, 'btn.btn-primary').click()
  33. time.sleep(1)
  34. return True if self.driver.title == "Состояние модема" else False
  35. def test_page_click(self):
  36. self.connect()
  37. while True:
  38. if self.login() == False:
  39. return
  40. for i in range(1):
  41. time.sleep(self.WEB_TIMEOUT)
  42. nav = self.driver.find_element(By.XPATH, "//ul[@id='nav']/li[2]/a").click()
  43. time.sleep(self.WEB_TIMEOUT)
  44. nav = self.driver.find_element(By.XPATH, "//ul[@id='nav']/li[3]/a").click()
  45. time.sleep(self.WEB_TIMEOUT)
  46. nav = self.driver.find_element(By.XPATH, "//ul[@id='nav']/li[1]/a").click()
  47. time.sleep(self.WEB_TIMEOUT)
  48. nav = self.driver.find_element(By.ID, 'logout').click()
  49. time.sleep(self.WEB_TIMEOUT)
  50. def start_web_clicker(self):
  51. self.web_thread.start()
  52. def start_pgw_sender(self, args):
  53. if len(args) != 0:
  54. if args[0] == 1:
  55. self.pgw_1_thread.start()
  56. if args[1] == 1:
  57. self.pgw_2_thread.start()
  58. if args[2] == 1:
  59. self.pgw_3_thread.start()
  60. else:
  61. self.pgw_1_thread.start()
  62. self.pgw_2_thread.start()
  63. self.pgw_3_thread.start()
  64. def portgw_sender(self, pgw):
  65. while True:
  66. pgw.open()
  67. pgw.write(self.PGW_TEST_DATA)
  68. pgw.read(len(self.PGW_TEST_DATA))
  69. pgw.close()
  70. time.sleep(0.1)
  71. def metrolog():
  72. robot = MetrologTester('192.168.31.230')
  73. robot.start_pgw_sender([0, 1, 1])
  74. robot.start_web_clicker()
  75. if __name__ == '__main__':
  76. metrolog()