软件测试— web自动化项目实操
1 初始化项目
1.1新建项目,创建目录结构

1.2安装依赖包
- 安装sekenium包
- 安装parameterized包
- 添加HTMLTestRunner
- 查看已安装的依赖包:点击File—Settings—Project webAutoTest—Project Interpreter
2 初始化代码(通过公用方法进行封装,减少子类代码)
2.1封装驱动工具类:对浏览器驱动对象经常使用到的操作封装成一个工具类,方便代码的调用。一般包含1获取浏览器驱动对象并完成一个初始化的操作和 2关闭浏览器。
2.1.1具体步骤
# 导包
from selenium import webdriver
# 1 定义驱动工具类
class DriverUtil: //通过class关键字,driver驱动
_driver = None //首先定义变量,为空
# 2 获取浏览器驱动对象,并完成初始化操作 (get_deriver方法)
@classmethod
def get_driver(cls):
if cls._driver is None:
cls._driver=webdriver.Chrome() //获取驱动对象,如果cls._driver为空,创建Chrome浏览器
cls._driver=maximize.window() //完成初始化操作,1实现浏览器窗口最大化
cls._driver=implicitly_wait(30) //2定义隐私等待(30s)
cls._driver.get("http://localhost") //3打开项目首页
return cls._driver //4返回浏览器驱动对象
# 3 关闭驱动对象
@classmethod
def quit_driver(cls):
if cls._driver:
cls._driver.quit() //如果cls._driver不为空,关闭驱动对象
cls._driver = None //设置为空,避免二次出错
2.2封装PO基类,定义BasePage和BaseHandle
2.2.1具体步骤
# 基类定义到base目录下

# 导包
from utils import DriverUtil
# 1 对象库层—基类封装
class BasePage: //定义一个BasePage的类
def _init_(self): //先定义,重写init方法
self.driver = DriverUtil.get_driver //在方法里面定义成一个属性,获取driver对象
#元素定位
def find_element(self,location): //location该参数为元素的类型
// #1 创建了driver对象后就可以直接使用,最终将element对象返回。
// 该方法需要传递两个参数,1元素定位的类型(从第一个数据中获取),2元素定位的内容
return self.driver.find_element(location[0],location[1])
# 2 操作层—基类封装
class BaseHandle: //定义一个类
#完成一个方法的封装
#元素输入操作
//1方法名称定义成input_text,在方法里2定义参数(通过element对象传进来,text具体要输出的内容)
def input_text(self,element,text):
element.clear()
element.send_keys(text)
3 实际项目—PO封装-首页

3.1具体步骤,实现:在搜索框输入文本,进行搜索。
代码
#对象库层
class IndexPage(BasePage):
def _init_(self):
super()._init_()
# 登录链接
self.login_link = (By.LINK_TEXT,"登录")
# 搜索输入框
self.search_input = (By.ID,"q") //ID属性定位
![]()
# 搜索按钮
self.search_btn = (By.CSS_SELECTOR,"[type='submit']") //CSS定位,根据属性进行定位type
![]()
def find_login_link(self): //以下完成了对象库的封装
return self.find_element(self.login_link)
def find_search_input(self):
return self.find_element(self.search_input)
def find_search_btn (self):
return self.find_element(self.search_btn)
# 操作层
class IndexHandle(BaseHandle):
def _init_(self):
self.index_page = IndexPage()
def click_login_link(self):
self.index_page.find_login_link().click()
def input_search_text(self,kw): //传递一个关键字,kw
//1先调用对象库里的方法(find_search_input) 2传进搜索的关键字
self.input_text(self.index_page.find_search_input(),kw)
def click_search_btn(self):
self.index_page.find_search_btn().click() //找到search_btn元素,执行点击操作
#业务层
class IndexProxy:
def _init_(self):
self.index_handle = IndexHandle()
#跳转到登录页面
def to_login_page(self):
self.index_handle.click_login_link()
#搜索商品
def search_goods(self,kw): //定义一个参数,搜索的内容
#输入关键字
self.index_handle.input_search_text(kw)
#点击搜索按钮
self.index_handle.click_search_btn()
3 实际项目

浙公网安备 33010602011771号