selenium+python 完整自动化测试脚本及讲解(二、object包介绍)
不好意思,全两天有事,断更了,还望谅解。
Object 包主要保存了 WebDriver 对象的获取方式,与创建方式。
文件名 | 简介 |
---|---|
DRIVER | 对象的获取,新建方法 |
SINGLE_DRIVER | 保存对象,完成单例模式 |
browser_drivers | 保存浏览器驱动,AutoIt插件 |
DRIVER.py 文件内容源码
# -*- coding: utf-8 -*-
from selenium import webdriver
from utils.OUTER_TOOLS import get_abspath
from utils.PROPERTIES_TOOLS import getProperties
from object.SINGLE_DRIVER import Driver
def init_Driver(is_new=None):
"""
初始化,driver 对象,保存在object.SINGLE_DRIVER 的 Driver数组中
:param is_new: 是否创建一个新的浏览器对象
is_new=None Driver数组中的第 1 个元素赋值
is_new=new 追加到Driver数组中
:return: 无 return
"""
# 在 init.properties 文件中获取配置内容
show = getProperties('show_browser_window')
webdriver_option = getProperties('webdriver_option')
executable_path = get_abspath() + "\\object\\browser_drivers\\"
if not isinstance(show, str):
raise Exception("show 参数类型不配,使用‘true’or‘false’")
if not isinstance(webdriver_option, str):
raise Exception("show 参数类型不配,使用‘true’or‘false’")
if not webdriver_option == "Chrome" or webdriver_option == "Firefox":
raise Exception("目前只支持 谷歌浏览器:Chrome\n 与 火狐浏览器:Firefox")
if show == "true":
if webdriver_option == "Firefox":
driver = webdriver.Firefox(executable_path=executable_path + "geckodriver.exe")
else:
driver = webdriver.Chrome(executable_path=executable_path + "chromedriver.exe")
else:
if webdriver_option == "Firefox":
Firefox_options = webdriver.FirefoxOptions()
Firefox_options.add_argument('--headless')
driver = webdriver.Firefox(firefox_options=Firefox_options,
executable_path=executable_path + "geckodriver.exe")
else:
Options = webdriver.ChromeOptions()
Options.add_argument('--headless')
driver = webdriver.Chrome(chrome_options=Options,
executable_path=executable_path + "chromedriver.exe")
driver.implicitly_wait(int(getProperties('implicitly_wait')))
# driver.get(getProperties('url'))
# is_new=None Driver数组中的第 1 个元素赋值
# is_new=new 追加到Driver数组中
if is_new is None:
Driver[0] = driver
elif is_new == "new":
Driver.append(driver)
def set_Driver_implicitly_wait(driver, time: int = 0) -> None:
"""
:param driver: WebDriver 对象
:param time: 设置新的等待时间
:return:
"""
if time == 0:
driver.implicitly_wait(int(getProperties('implicitly_wait')))
else:
driver.implicitly_wait(time)
# 初始化好 一个 Driver 对象
init_Driver()
def getDriver(index: int = 0):
"""
返回已经创建好的 Driver
"""
# 防止下标越界
if len(Driver) < index:
index = len(Driver) - 1
return Driver[index]
def newDriver():
"""
:return: 新创建一个Driver对象,并返回新创建的Driver对象
"""
init_Driver("new")
return Driver[len(Driver) - 1]
OUTER_TOOLS.py
# -*- coding: utf-8 -*-
from selenium.webdriver.remote.webdriver import WebDriver
# 初识化 Driver[0] = WebDriver 完全是为了编辑器认识他
Driver = [WebDriver]
引用的外部文件:
# 参考网址:https://blog.csdn.net/weixin_43664254/article/details/90512419
from utils.OUTER_TOOLS import get_abspath
from utils.PROPERTIES_TOOLS import getProperties