from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import win32gui import win32con import os def open_browser(browser="chrome"): """ 打开浏览器 :param browser: 浏览器名称 :return: """ if browser == "chrome": driver = webdriver.Chrome() elif browser == "firefox": driver = webdriver.Firefox() elif browser == "ie": driver = webdriver.Ie() else: print("请输入正确的浏览器名称,例如:'chrome','firefox','ie'") driver = None return driver class Base: def __init__(self, driver): """ 初始化浏览器 :param driver: """ self.driver = driver def open_url(self, url): """ 打开网址 :param url: 网址 :return: """ try: self.driver.get(url) # 浏览器最大化 self.driver.maximize_window() except Exception as msg: print(msg) def close(self): """ 关闭浏览器 :return: """ try: self.driver.quit() except Exception as e: print(e) def local_time(self): """ 获取当前时间 :return: """ times = time.time() local_time = time.localtime(times) print("运行时间戳:", time.strftime("%Y-%m-%d %H:%M:%S", local_time)) def find_element(self, locator, timeout=10): """ 定位单个元素 :param:locator:定位器,元组格式("id","id属性值") :return: """ try: element = WebDriverWait(self.driver, timeout).until(EC.presence_of_element_located(locator)) return element except: print(f"元素{locator}没找到") return False def find_elements(self, locator, timeout=10): """ 定位一组元素 :param locator: 定位器 :param timeout: 最大等待时间 :return: """ try: elements = WebDriverWait(self.driver, timeout).until(EC.presence_of_all_elements_located(locator)) return elements except: print(f"元素{locator}没找到") return False def click(self, locator): """ 点击元素 :return: """ element = self.find_element(locator) try: element.click() except Exception as msg: print(msg) def send_Keys(self, locator, text): """ 输入 :param locator: 定位器,元组 :param text: 需要输入的文本 :return: """ element = self.find_element(locator) try: element.send_keys(Keys.CONTROL, 'a') element.send_keys(text) except Exception as msg: print(msg) def is_text_in_element(self, locator, text, timeout=10): """ 判断文本是否在元素的文本中,如果在返回True,如果不在返回False :param locator: 定位器,元组 :param text: 文本 :return: """ try: result = WebDriverWait(self.driver, timeout).until(EC.text_to_be_present_in_element(locator, text)) return result except: return False def is_value_in_element(self, locator, value, timeout=10): """ 判断value值是否是元素value属性,对应的值,如果是,返回True,否则返回False :param locator: 定位器,元组 :param value: 文本 :param timeout: :return: """ try: result = WebDriverWait(self.driver, timeout).until(EC.text_to_be_present_in_element_value(locator, value)) return result except: return False def is_selected(self, locator): """ 判断元素是否被选中:如果选中,返回True,否则返回False :return: """ element = self.find_element(locator) try: result = element.is_selected() return result except: return False def get_attribute(self, locator): """ 获取input标签里的value值内容 :param locator: :return: """ element = self.find_element(locator) try: ele_value = element.get_attribute('value') return ele_value except: return False def get_screenshot(self): """ 获取错误或者异常的截图照片 :param: :return: """ picture_time = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time())) print(picture_time) try: picture_url = driver.get_screenshot_as_file('image' + picture_time + '.png') print("%s:截图成功!!!" % picture_url) except BaseException as msg: print(msg) def update_edition(self): """ 从本地选择适合升级的版本,升级版本 :param : :return: """ # win32gui dialog = win32gui.FindWindow('#32770', u'打开') # 对话框 ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None) ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None) Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None) # 上面三句依次寻找对象,直到找到输入框Edit对象的句柄 button = win32gui.FindWindowEx(dialog, 0, 'Button', None) # 确定按钮Button win32gui.SendMessage(Edit, win32con.WM_SETTEXT, None, r'E:\testMV\DunwuDetect2V8.238002.18_20201120.zip') time.sleep(2) win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) # 按button time.sleep(5)