PO封装
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains #鼠标操作
class BasePage():
'''BasePage封装所有界面都公用的方法。例如driver,find_element等'''
'''实例化BasePage类时,事先执行的__init__方法,该方法需要传递参数'''
def __init__(self,driver):
self.driver = driver
# 进入网址
def get(self,url):
self.driver.get(url)
# 元素定位,替代八大定位
def get_element(self, *locator):
return self.driver.find_element(*locator)
# 点击
def left_click(self, *locator):
ActionChains(self.driver).click(self.get_element(*locator)).perform()
# 输入
def send_text(self, text, *locator):
self.driver.find_element(*locator).send_keys(text)
# 清除
def clear_text(self, *locator):
self.driver.find_element(*locator).clear()
# 表单切换
def switch_iframe(self, *locator):
self.driver.switch_to.frame(self.driver.find_element(*locator))
# 窗口切换
def switch_window(self, n):
self.driver.switch_to.window(self.driver.window_handles[n])
第一个页面
from basedemo.basePage import BasePage
from selenium.webdriver.common.by import By
class OneTest(BasePage):
# 初始化属性
def __init__(self, driver):
BasePage.__init__(self,driver)
# 打开百度
def open_baidu(self,url):
self.get(url)
# 输入淘宝
def send_taobao(self,text):
self.send_text(text,By.ID,"kw")
# 点击百度一下
def click_bdyx(self):
self.left_click(By.ID,"su")
# 点击淘宝链接
def click_tblj(self):
self.left_click(By.XPATH,'//*[text()="淘宝网"]')
# 切换窗口
def qiehuan_window(self,n):
self.switch_window(n)
第二个界面
from basedemo.basePage import BasePage
from selenium.webdriver.common.by import By
class TwoTest(BasePage):
# 初始化属性
def __init__(self, driver):
BasePage.__init__(self,driver)
# 点击登录
def taobao_denglu(self):
self.left_click(By.XPATH,"//*[text()='亲,请登录']")
# 二维码登录
def erwm_denglu(self):
self.left_click(By.CSS_SELECTOR,'.icon-qrcode')
# 清空输入框数据
def clear_text1(self):
self.clear_text(By.ID,'q')
# 输入要买的商品
def send_shop(self,text):
self.send_text(text,By.ID,'q')
# 点击搜索
def search(self):
self.left_click(By.CSS_SELECTOR,'.btn-search')
# 筛选条件 风格为卡通
def choose_katong(self):
self.left_click(By.XPATH,'//*[@id="J_NavCommonRowItems_1"]/a[3]/span[2]')
# 勾选包邮
def choose_baoyou(self):
self.left_click(By.XPATH,'//*[text()="包邮"]')
# 筛选价位
def choose_money(self):
self.left_click(By.XPATH,'//*[@id="J_relative"]/div[1]/div/div[1]/div[2]/div/a[2]/span[2]')
# # 选择发货地
# def choose_address(self):
# self.left_click(By.CSS_SELECTOR,"div.location:nth-child(5) > div:nth-child(1) > div:nth-child(1) > span:nth-child(1)")
#
# def choose_addr2(self):
# self.left_click(By.CSS_SELECTOR,"div.section:nth-child(2) > ul:nth-child(1) > li:nth-child(9) > a:nth-child(1)")
# 点击选择商品
def click_shangpin(self):
self.left_click(By.CSS_SELECTOR,"#J_Itemlist_Pic_667778874458")
# 窗口切换
def switch_window2(self,n):
self.switch_window(n)
第三个页面
from basedemo.basePage import BasePage
from selenium.webdriver.common.by import By
class ThreeTest(BasePage):
# 初始化属性
def __init__(self, driver):
BasePage.__init__(self,driver)
# 选择米白底粉小花
def click_style(self):
self.left_click(By.XPATH, '//*[text()="米白底粉小花"]')
# 选择iphone12
def click_iphone12(self):
self.left_click(By.XPATH, '//*[text()="iphone12"]')
# 加入购物车
def add_car(self):
self.left_click(By.XPATH, '//*[@id="J_juValid"]/div[2]/a')
# 点击购物车并进入
def click_car(self):
self.left_click(By.XPATH, '//*[@id="J_ResultSummary"]/div[4]/a[2]')
生成测试报告(HTML)
from testdemo.testDemo import TestTaoBaoDemo
from common.HTMLTestRunner import HTMLTestRunner
import unittest
class HtmlClass():
def htmlmethod(self):
suite = unittest.TestSuite() # 创建测试套件
list_testlist = ["test001","test002","test003"]
for i in list_testlist:
suite.addTest(TestTaoBaoDemo(i)) #将测试用例添加到测试套件中
# runner = unittest.TextTestRunner(verbosity=2)
# runner.run(suite)
with open("../taobao.html", "wb") as f:
HTMLTestRunner(
stream=f,
title="淘宝单元测试",
description="测试一期",
verbosity=2
).run(suite)
h = HtmlClass()
h.htmlmethod()
html页面