常用封装方法

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)

 

posted @ 2021-01-19 17:30  弹弹大魔王  阅读(7)  评论(0编辑  收藏  举报