import time import threading from transport import * from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as ES class MetrologTester(): USER = 'user' PASWORD = 'uchetmo' PGW_PORT_1 = 1001 PGW_PORT_2 = 1002 PGW_PORT_3 = 1003 PGW_TEST_DATA = b'abcdefghijklmnopqrstuvwxyz' WEB_TIMEOUT = 0.5 def __init__(self, ip): self.pgw_1 = PortgwTcp(ip, self.PGW_PORT_1) self.pgw_2 = PortgwTcp(ip, self.PGW_PORT_2) self.pgw_3 = PortgwTcp(ip, self.PGW_PORT_3) self.pgw_1_thread = threading.Thread(target=self.portgw_sender, args=(self.pgw_1, )) self.pgw_2_thread = threading.Thread(target=self.portgw_sender, args=(self.pgw_2, )) self.pgw_3_thread = threading.Thread(target=self.portgw_sender, args=(self.pgw_3, )) self.ip = ip self.driver = webdriver.Firefox() self.web_thread = threading.Thread(target=self.test_page_click) def connect(self): self.driver.get('http://' + self.ip) def login(self) -> bool: self.driver.find_element(By.ID, 'login').send_keys(self.USER) self.driver.find_element(By.ID, 'pass').send_keys(self.PASWORD) self.driver.find_element(By.CLASS_NAME, 'btn.btn-primary').click() time.sleep(1) return True if self.driver.title == "Состояние модема" else False def test_page_click(self): self.connect() while True: if self.login() == False: return for i in range(1): time.sleep(self.WEB_TIMEOUT) nav = self.driver.find_element(By.XPATH, "//ul[@id='nav']/li[2]/a").click() time.sleep(self.WEB_TIMEOUT) nav = self.driver.find_element(By.XPATH, "//ul[@id='nav']/li[3]/a").click() time.sleep(self.WEB_TIMEOUT) nav = self.driver.find_element(By.XPATH, "//ul[@id='nav']/li[1]/a").click() time.sleep(self.WEB_TIMEOUT) nav = self.driver.find_element(By.ID, 'logout').click() time.sleep(self.WEB_TIMEOUT) def start_web_clicker(self): self.web_thread.start() def start_pgw_sender(self, args): if len(args) != 0: if args[0] == 1: self.pgw_1_thread.start() if args[1] == 1: self.pgw_2_thread.start() if args[2] == 1: self.pgw_3_thread.start() else: self.pgw_1_thread.start() self.pgw_2_thread.start() self.pgw_3_thread.start() def portgw_sender(self, pgw): while True: pgw.open() pgw.write(self.PGW_TEST_DATA) pgw.read(len(self.PGW_TEST_DATA)) pgw.close() time.sleep(0.1) def metrolog(): robot = MetrologTester('192.168.31.230') robot.start_pgw_sender([0, 1, 1]) robot.start_web_clicker() if __name__ == '__main__': metrolog()