python+unittest+selenium综合实验
需求:
1、打开百度
2、搜索CSDN
3、通过密码登录方式登录CSDN
@正确用户名正确密码
复制用户名,删除用户名,粘贴
@正确用户名错误密码
@......(跳过此条用例)
4、断言并将失败用例进行截图
5、生成HTML测试报告(标题:综合实验测试,描述:操作系统+浏览器版本)
'''
需求:
1、打开百度
2、搜索CSDN
3、通过密码登录方式登录CSDN
@正确用户名正确密码
复制用户名,删除用户名,粘贴
@正确用户名错误密码
@......(跳过此条用例)
4、断言并将失败用例进行截图
5、生成HTML测试报告(标题:综合实验测试,描述:操作系统+浏览器版本)
'''
# 导包
import unittest
from time import sleep, strftime
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
from HTMLTestRunner import HTMLTestRunner
version = 30
# 实例化 测试类 并继承 unittest.TestCase
class TestLogin(unittest.TestCase):
# 定义初始化方法
def setUp(self):
# 定义浏览器驱动对象
self.driver = webdriver.Firefox()
self.driver.get("https://www.baidu.com")
# 浏览器最大化
self.driver.maximize_window()
# 隐式等待
self.driver.implicitly_wait(15)
# 定义teardown函数方法
def tearDown(self):
sleep(5)
# 关闭所有浏览器驱动
self.driver.quit()
def test_login01(self):
driver = self.driver
# 通过css定位百度输入框 id定位器 并输入CSDN
driver.find_element_by_css_selector("#kw").send_keys("CSDN")
# 通过css定位百度一下 id定位器并点击
driver.find_element_by_css_selector("#su").click()
# 获取当前浏览器页面句柄
handle = driver.current_window_handle
print("当前浏览器页面句柄为:", handle)
# 通过 partial_link_text 定位a标签
driver.find_element_by_partial_link_text("专业开发者社区").click()
# 获取所有浏览器句柄
handle_sum = driver.window_handles
print("所有浏览器页面句柄:", handle_sum)
# 切换当CSDN页面句柄
for handle_CSDN in handle_sum:
if handle_CSDN != handle:
driver.switch_to.window(handle_CSDN)
# # 通过 partial_link_text 定位a标签 登录/注册
sleep(5)
driver.find_element_by_partial_link_text("登录/注册").click()
# 切换到 登录页面iframe
driver.switch_to.frame("passport_iframe")
sleep(5)
# 通过xpath定位 密码登录
a = driver.find_element_by_xpath("/html/body/div[1]/div/div/div[2]/div[1]/div[1]/div[1]/span[4]").text
print(a)
# action = ActionChains(driver)
# action.double_click(a).perform()
try:
self.assertEqual(a, "密码登录!")
print("预期与实际结果符合")
except AssertionError:
self.driver.get_screenshot_as_file("./{}.png".format(strftime("%Y_%m_%d_%H_%M_%S")))
@unittest.skipIf(version > 25, "当前版本大于25跳过")
def test_login02(self):
print("aaaa")
# 生成测试套件
suite = unittest.TestSuite()
suite.addTest(TestLogin("test_login01"))
suite.addTest(TestLogin("test_login02"))
# 实例化TextTestRunner对象并执行
# runner = unittest.TextTestRunner(verbosity=2)
# runner.run(suite)
# 设置报告生成路径及文件名
file_name = './{}.html'.format(strftime("%Y_%m_%d_%H_%M_%S"))
with open(file_name,"wb")as f:
# 实例化HTML TestRunner对象
runner = HTMLTestRunner(stream=f,title="综合实验测试报告",description="操作系统:win10 64位,火狐浏览器")
runner.run(suite)
结果显示: