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)