bt67xx.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import time
  2. import threading
  3. import os
  4. from selenium import webdriver
  5. from selenium.webdriver.common.by import By
  6. from selenium.webdriver.support.ui import Select
  7. from selenium.webdriver.support import expected_conditions as ES
  8. from selenium.webdriver.support.ui import WebDriverWait
  9. class BT67xxWebTest():
  10. def __init__(self, ip):
  11. self.ip = ip
  12. self.web_thread = threading.Thread(target=self.test_update_in_thread, daemon=True)
  13. self.web_thread.run()
  14. def connect(self):
  15. self.driver = webdriver.Firefox()
  16. self.driver.get('http://' + self.ip)
  17. def login(self):
  18. self.driver.find_element(By.ID, 'login').send_keys("admin")
  19. self.driver.find_element(By.ID, 'pass').send_keys("12345")
  20. self.driver.find_element(By.CLASS_NAME, 'btn.btn-primary').click()
  21. time.sleep(0.5)
  22. def go_to_iap(self):
  23. """Переход в IAP из основного web-интерфейса"""
  24. self.driver.get('http://' + self.ip + '/settings.html')
  25. self.driver.find_element(By.ID, 'tabset1__service').click()
  26. self.driver.find_element(By.ID, 'dev-update').click()
  27. select = Select(self.driver.find_element(By.ID, 'dev_update_method'))
  28. select.select_by_value('manual')
  29. self.driver.find_element(By.ID, 'start_fw_update').click()
  30. # Go to IAP!
  31. alert = self.driver.switch_to.alert
  32. alert.accept()
  33. time.sleep(10)
  34. def load_file_in_iap(self):
  35. """Выбор файла и загрузка прошивки"""
  36. try:
  37. file_input = WebDriverWait(self.driver, 10).until(ES.presence_of_element_located((By.ID, "uploadBtn2")))
  38. file_input.send_keys(self.get_file_path("BT_6721xx.bin"))
  39. WebDriverWait(self.driver, 10).until(ES.presence_of_element_located((By.CLASS_NAME , 'btn.btn-primary-inverted'))).click()
  40. except:
  41. print("File load error!")
  42. def get_file_path(self, file_name):
  43. """Возвращает путь к файлу"""
  44. current_directory = os.path.dirname(os.path.abspath(__file__))
  45. return os.path.join(current_directory, file_name)
  46. def test_update_in_thread(self):
  47. success_upload_counter = 0
  48. self.connect()
  49. while (True):
  50. self.login()
  51. self.go_to_iap()
  52. self.load_file_in_iap()
  53. success_upload_counter += 1
  54. print("Количесвто успешных обновлений:", success_upload_counter)
  55. time.sleep(14)
  56. def test_update(self):
  57. self.connect()
  58. self.login()
  59. self.go_to_iap()
  60. self.load_file_in_iap()
  61. def main():
  62. bt67xx = BT67xxWebTest("192.168.0.254")
  63. # bt67xx.test_update()
  64. if __name__ == '__main__':
  65. main()