# aler弹窗(警告型)
# from selenium import webdriver
# from time import sleep
# driver =webdriver.Chrome()
# driver.get('file:///D:/alert.html')
# driver.implicitly_wait(10)
# driver.maximize_window()
# # alert弹窗
# t=driver.switch_to.alert #切换到alert弹窗
# t.accept() #点击确定
# sleep(2)
# t.dismiss()
#
#
# 确认型弹窗
# from selenium import webdriver
# from time import sleep
# driver=webdriver.Chrome()
# driver.get('file:///D:/enter.html')
# driver.implicitly_wait(10)
# driver.maximize_window()
# driver.find_element_by_class_name('alert').click() #点击确认型弹窗
# t=driver.switch_to.alert
# t.accept() #点击确定
# 输入型弹窗
# from selenium import webdriver
# from time import sleep
# driver=webdriver.Chrome()
# driver.get('file:///D:/prompt.html')
# driver.implicitly_wait(10)
# driver.maximize_window()
# driver.find_element_by_class_name('alert').click() #点击输入型弹窗位置
# t=driver.switch_to.alert
# print(t.text)
# t.send_keys('https://www.baidu.com/')
# t.accept() #点击确定
# t.dismiss() #点击取消
# iframe框处理,使用qq登录
# from selenium import webdriver
# from time import sleep
# driver=webdriver.Chrome()
# driver.get('https://www.jd.com/')
# driver.implicitly_wait(10)
# driver.maximize_window()
# driver.find_element_by_link_text('你好,请登录').click()
# driver.find_element_by_class_name('pdl').click() #点击选择QQ方法登录
# sleep(2)
# iframe=driver.find_element_by_id('ptlogin_iframe') #定位到iframe框
# driver.switch_to.frame(iframe) #进入到iframe框
# driver.find_element_by_id('img_out_1843768342').click() #点击QQ头像登录
# sleep(2)
# driver.find_element_by_id('key').send_keys('羽绒服')
# 登录163网易邮箱
# from selenium import webdriver
# from time import sleep
# driver=webdriver.Chrome()
# driver.get('https://mail.163.com/')
# driver.implicitly_wait(10)
# driver.maximize_window()
# 第一种方法:通过元素定位
# iframe=driver.find_element_by_xpath('//*[@id="loginDiv"]/iframe[1]') #定位iframe
# driver.switch_to.frame(iframe) #进入iframe
# 第二种方法:通过标签名定位到iframe框
# iframe=driver.find_element_by_tag_name('iframe')
# driver.switch_to.frame('iframe')
# # 第三种方法:通过索引进入到iframe框
# driver.switch_to.frame(0)
# driver.find_element_by_name('email').send_keys('lzlihyam')
# driver.find_element_by_name('password').send_keys('XXXXyyy1')
# driver.find_element_by_id('dologin').click()
# 滚动条操作
# from selenium import webdriver
# from time import sleep
# driver=webdriver.Chrome()
# driver.get('https://www.jd.com//')
# driver.implicitly_wait(10)
# driver.maximize_window()
# 滑动到底部
# win1='window.scrollTo(0,20000)' #向下滑动20000px
# # driver.execute_script(win1)
# # sleep(2)
# # # 滑动到顶部
# # win2='window.scrollTo(0,0)'
# # driver.execute_script(win2)
# 第二种
# js='var a=document.documentElement.scrollTop=30000'
# driver.execute_script(js)
# 缓慢下滑
# x=0
# while x<30000:
# x+=500
# js1='var a=document.documentElement.scrollTop='+str(x)
# driver.execute_script(js1)
# sleep(3)
# # keys类
# from selenium import webdriver
# from selenium.webdriver.common.keys import Keys #导入一个keys类
# from time import sleep
# driver=webdriver.Chrome()
# driver.get('https://www.baidu.com//')
# driver.implicitly_wait(10)
# driver.maximize_window
# driver.find_element_by_id('kw').send_keys('啦啦啦啦啦')
# sleep(1)
# driver.find_element_by_id('kw').send_keys(Keys.BACK_SPACE) #删除一个字符
# sleep(1)
# driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'a') #全选
# sleep(1)
# driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'x') #剪切
# sleep(1)
# driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'v') #粘贴
# sleep(1)
# driver.find_element_by_id('kw').send_keys(Keys.ENTER) #回车
# def find_element(locator,*value):
# '''封装一个元素定位的方法(上面代码使用太多find_element'''
# sleep(1)
# driver.find_element_by_id('kw').send_keys(*value)
#
# if __name__ == '__main__':
# find_element('kw','selenium')
# find_element('kw',Keys.BACK_SPACE)
# find_element('kw',Keys.CONTROL,'a')
# find_element('kw',Keys.CONTROL,'x')
# find_element('kw',Keys.CONTROL,'v')
# find_element('kw',Keys.ENTER)
# 把上面的代码进行封装,封装到类里面
# from selenium import webdriver
# class Bbs:
# def __init__(self):
# self.driver=webdriver.Chrome()
# self.driver.get('http://192.168.0.129/bbs/forum.php')
# self.driver.maximize_window()
# self.driver.implicitly_wait(10)
# def login(self):
# '''封装一个登录的方法'''
# self.driver.find_element_by_id('ls_username').send_keys('admin')
# self.driver.find_element_by_id('ls_password').send_keys('123456')
# self.driver.find_element_by_css_selector('.pn').click()
# def manage_center(self):
# self.login()
# self.driver.find_element_by_link_text('管理中心').click()
# if __name__ == '__main__':
# b=Bbs()
# b.login()
# b.manage_center()
# #unittest框架介绍
# import unittest #导入unittest这个库
# #TestCase这类是用来组织和管理自动化测试用例的
# class Test(unittest.TestCase):
# @classmethod
# def setUpClass(cls) -> None:
# print('类开始')
# @classmethod
# def tearDownClass(cls) -> None:
# print('类结束')
# def setUp(self) -> None:
# print('方法开始')
# def tearDown(self) -> None:
# print('方法结束')
# def test002(self):
# print(222)
# def test001(self):
# print(111)
# def test_a(self):
# print(333)
# def test_B(self):
# print(444)
# # def cook(self):
# # print(555)
# if __name__ == '__main__':
# unittest.main() #运行unittest单元测试框架里面所有代码,函数的入口
# # 1、在unittest框架里面写的用例名称必须以test开头
# # 2、用例运行顺序按照用例名称ASCII码 0-9 A-Z a-z
# # 3、方法开始和方法结束在每个用例运行之前和结束都会运行一次
# # 4、类开始和类结束在所有用例运行前和后只运行一次
# 自动化测试用例运行方法
# 第一种
import unittest
from selenium import webdriver
from time import sleep
from ui_auto.HTMLTestRunner3_New import HTMLTestRunner
class test_Baidu(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.get('https://www.baidu.com')
self.driver.maximize_window()
self.driver.implicitly_wait(10)
def tearDown(self):
sleep(3)
self.driver.quit()
def test001(self):
self.driver.find_element_by_id('kw').send_keys('selenium')
def test002(self):
self.driver.find_element_by_id('kw').send_keys('python')
# def all_case():
# '''封装一个套件,套件就是用来装用例的,相当于是一个容器'''
# suite=unittest.TestSuite() #创建一个suite对象,用来添加需要运行的用例
# suite.addTest([Test_Baidu('test001'),Test_Baidu('test002')]) #把test001这条用例添加到套件里
# return suite
# #
if __name__ == '__main__':
# 第一种方法,运行了上面封装的所有用例
# unittest.main()
# # 第二种运行方式(运行套件里面添加的部分用例)
# runner=unittest.TextTestRunner() #创建一个运行用例的对象
# runner.run(all_case()) #运行上面定义的套件里面的用例
# # 第三种方法:通过模糊匹配用例运行
start_dir = r'D:\project\dcs8\ui_auto'
# 模糊匹配ui_auto这个目录下面需要运行的用例
discover = unittest.defaultTestLoader.discover(start_dir=start_dir, pattern='less*.py')
# print(discover) #打印出来显示搜索到哪些用例
filename = start_dir + '\\' + '_ui-report.html'
# print(filename)
f = open(filename,'wb') # wb是用二进制的方式取写入到filename这个文件里
runner = HTMLTestRunner(stream=f,
title='UI自动化测试报告',
description='用例执行情况如下',
tester='dcs8')
runner.run(discover) # 运行模糊匹配出来的用例
f.close() # 关闭文件对象
|
|