web自动化

from selenium import webdriver #导入selenium的webdriver模块
yiyuan=webdriver.Chrome()  #初始化webdriver
yiyuan.get('http://101.133.169.100:8090') #打开浏览器输入url进入医院系统的登录页面
yiyuan.find_element_by_id('LoginEmail').send_keys('111') #给邮箱框中传入数据
yiyuan.find_element_by_id('LoginPassword').send_keys('111')#给密码框传入数据
yiyuan.find_element_by_id('loginId').click()#点击登录按钮
#
from selenium import webdriver #导入selenium的webdriver模块
dianshang=webdriver.Chrome()  #初始化webdriver
dianshang.get('http://101.133.169.100/yuns/index.php') #打开浏览器输入url
dianshang.find_element_by_name('key').send_keys('111') #给搜索框传入数据

from selenium import webdriver #导入selenium的webdriver模块
baidu=webdriver.Chrome()  #初始化webdriver
baidu.get('http://www.baidu.com') #打开浏览器输入url
baidu.find_element_by_name('tj_briicon').click() #点击更多按钮

from selenium import webdriver #导入selenium的webdriver模块
baidu=webdriver.Chrome()  #初始化webdriver
baidu.get('http://www.baidu.com') #打开浏览器输入url
baidu.find_element_by_name('wd').send_keys('111') #搜索框输入数据
baidu.find_element_by_id('su').click() #点击百度一下按钮

from selenium import webdriver #导入selenium的webdriver模块
dianshang=webdriver.Chrome()  #初始化webdriver
dianshang.get('http://101.133.169.100/yuns/index.php') #打开浏览器输入url
dianshang.find_element_by_class_name('but1').send_keys('男装')
dianshang.find_element_by_class_name('but2').click()#点击搜索按钮

from selenium import webdriver #导入selenium的webdriver模块
baidu=webdriver.Chrome()  #初始化webdriver
baidu.get('https://zhidao.baidu.com/') #打开浏览器输入url
baidu.find_element_by_class_name('i-ask-link').click() #点击我要提问按钮

from selenium import webdriver #导入selenium的webdriver模块
dianshang=webdriver.Chrome()  #初始化webdriver
dianshang.get('http://101.133.169.100/yuns/index.php') #打开浏览器输入url
dianshang.find_element_by_link_text('登录').click() #点击登录按钮

from selenium import webdriver #导入selenium的webdriver模块
dianshang=webdriver.Chrome()  #初始化webdriver
dianshang.get('http://101.133.169.100/yuns/index.php') #打开浏览器输入url
dianshang.find_element_by_link_text('秒杀').click() #点击秒杀按钮

from selenium import webdriver #导入selenium的webdriver模块
dianshang=webdriver.Chrome()  #初始化webdriver
dianshang.get('http://101.133.169.100/yuns/index.php') #打开浏览器输入url
dianshang.find_element_by_link_text('男装女装').click() #点击男装女装按钮

from selenium import webdriver #导入selenium的webdriver模块
dianshang=webdriver.Chrome()  #初始化webdriver
dianshang.get('http://101.133.169.100/yuns/index.php') #打开浏览器输入url
dianshang.find_element_by_partial_link_text('夏天').click() #点击夏天最热按钮

from selenium import webdriver #导入selenium的webdriver模块
dianshang=webdriver.Chrome()  #初始化webdriver
dianshang.get('http://101.133.169.100/yuns/index.php') #打开浏览器输入url
dianshang.find_element_by_partial_link_text('整点秒').click() #点击整点秒杀按钮

from selenium import webdriver #导入selenium的webdriver模块
dianshang=webdriver.Chrome()  #初始化webdriver
dianshang.get('http://101.133.169.100/yuns/index.php') #打开浏览器输入url
dianshang.find_element_by_partial_link_text('阿里推出').click() #点击阿里推出88VIP卡按钮

# xpath绝对路径
# 电商系统点击秒杀按钮,使用xpath绝对路径定位
from selenium import webdriver #导入selenium的webdriver模块
dianshang=webdriver.Chrome()  #初始化webdriver
dianshang.get('http://101.133.169.100/yuns/index.php')
dianshang.find_element_by_xpath("/html/body/div[3]/div/div/a[2]").click()
# 电商系统搜索女装,使用xpath绝对路径定位
from selenium import webdriver #导入selenium的webdriver模块
dianshang=webdriver.Chrome()  #初始化webdriver
dianshang.get('http://101.133.169.100/yuns/index.php')
dianshang.find_element_by_xpath("/html/body/div/div/div/div/form/input[1]").send_keys('女装')
dianshang.find_element_by_xpath("/html/body/div/div/div/div/form/input[2]").click()


# xpath相对路径
# 百度搜索优快云,使用xpath相对路径
from selenium import webdriver
import time
baidu=webdriver.Chrome()
baidu.get('http://www.baidu.com')
time.sleep(2)
baidu.find_element_by_xpath("//input[@name='wd']").send_keys('优快云')
baidu.find_element_by_xpath("//input[@type='submit']").click()

# 如果属性不唯一,可以通过两个属性一起定位
# 博客园网站搜索框搜索测试,通过两个属性一起定位
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
driver.find_element_by_xpath("//input[@name='w' and @id='zzk_search_input']").send_keys('测试')
driver.find_element_by_xpath("//button[@type='submit' and @id='zzk_search_button' ]").click()
# 博客园网站点击精华按钮,通过两个属性一起定位
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
driver.find_element_by_xpath("//li[@id='sidenav_pick' and @class='sidenav-item ']").click()

# 某个控件属性包含某部分值定位
# 博客园网站搜索框输入自动化,通过placeholder属性中包含的“代码改变”定位
from selenium import webdriver
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
driver.find_element_by_xpath("//input[contains(@placeholder,'代码改变')]").send_keys('自动化')
# 博客园网站点击精华按钮,通过title属性中包含的“精”定位
from selenium import webdriver
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
driver.find_element_by_xpath("//a[contains(@title,'精')]").click()
# 博客园网站点击候选按钮,通过title属性中包含的“候”定位
from selenium import webdriver
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
driver.find_element_by_xpath("//a[contains(@title,'候')]").click()

# 根据文本信息定位,*代表所有标签
# 博客园网站点击新闻按钮,通过文本信息“新闻”定位
from selenium import webdriver
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
driver.find_element_by_xpath("//a[text()='新闻']").click()
# 博客园网站点击专区按钮,通过文本信息“专区”定位
from selenium import webdriver
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
driver.find_element_by_xpath("//a[text()='专区']").click()
# 博客园网站点击班级按钮,通过文本信息“班级”定位,*代表所有标签
from selenium import webdriver
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
driver.find_element_by_xpath("//*[text()='班级']").click()
# 博客园网站点击博问按钮,通过文本信息“博问”定位,*代表所有标签
from selenium import webdriver
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
driver.find_element_by_xpath("//*[text()='博问']").click()
# 
# 自身没有特殊属性,往父级找
# 博客园网站点击精华按钮,通过父级找特殊属性继续写相对路径
from selenium import webdriver
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
driver.find_element_by_xpath("//div[@id='side_nav']/ul/li[1]/a/span").click()
# 博客园网站点击精华按钮,通过父级找特殊属性继续写相对路径
from selenium import webdriver
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
driver.find_element_by_xpath("//ul[@class='sidenav']/li[1]/a").click()
# 博客园网站点击新闻按钮,通过父级找特殊属性继续写相对路径
from selenium import webdriver
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
driver.find_element_by_xpath("//ul[@id='nav_left']/li[3]/a").click()

# 从子级找父级,返回上一级用/..
# 博客园网站点击我评按钮,通过子级找父级写相对路径
from selenium import webdriver
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
driver.find_element_by_xpath("//a[@title='我评论过的博文']/..").click()

# 
# css绝对路径
# 电商系统点击登录按钮,用css绝对路径定位
from selenium import webdriver #导入selenium的webdriver模块
dianshang=webdriver.Chrome()  #初始化webdriver
dianshang.get('http://101.133.169.100/yuns/index.php')
dianshang.find_element_by_css_selector("html>body>div>div>div>div>div>p>a").click()
# 电商系统点击关于我们按钮,用css绝对路径定位
from selenium import webdriver #导入selenium的webdriver模块
dianshang=webdriver.Chrome()  #初始化webdriver
dianshang.get('http://101.133.169.100/yuns/index.php')
dianshang.find_element_by_css_selector("html>body>div:nth-child(10)>div>div>div>dl:nth-child(1)>dd>a").click()
# 电商系统点击免费注册按钮,用css绝对路径定位
from selenium import webdriver #导入selenium的webdriver模块
dianshang=webdriver.Chrome()  #初始化webdriver
dianshang.get('http://101.133.169.100/yuns/index.php')
dianshang.find_element_by_css_selector("html>body>div:nth-child(1)>div:nth-child(1)>div:nth-child(2)>a:nth-child(3)").click()

# css相对路径有id属性,也可以不写标签
# 博客园网站点击专区按钮,用css方法id属性定位
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
time.sleep(2)
driver.find_element_by_css_selector("a#nav_brandzone").click()
# 博客园网站点击专区按钮,用css方法id属性定位,不写标签
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
time.sleep(2)
driver.find_element_by_css_selector("#nav_brandzone").click()
# 博客园网站点击精华按钮,用css方法id属性定位
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
time.sleep(2)
driver.find_element_by_css_selector("li#sidenav_pick").click()
# 博客园网站点击候选按钮,用css方法id属性定位,不写标签
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
time.sleep(2)
driver.find_element_by_css_selector("li#sidenav_candidate").click()

# 如果有class属性,(标签).class的属性值,也可以不写标签
# 博客园网站点击发现按钮,用css方法id和class属性
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
time.sleep(2)
driver.find_element_by_css_selector("ul#nav_left>li.dropdown>div.dropdown-button").click()
# 博客园网站点击发现按钮,用css方法id和class属性,不写标签
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
time.sleep(2)
driver.find_element_by_css_selector("#nav_left>.dropdown>.dropdown-button").click()
# 博客园网站点击博客园图标,用css方法id和class属性
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
time.sleep(2)
driver.find_element_by_css_selector("ul#nav_left>li.navbar-branding").click()

# 没有id和class,只要属性是唯一的,标签[属性=属性值],可以不写标签类型
# 博客园网站搜索框输入111,用css定位
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
time.sleep(2)
driver.find_element_by_css_selector("input[placeholder='代码改变世界']").send_keys("111")
# 博客园网站点击发现按钮,用css定位
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
time.sleep(2)
driver.find_element_by_css_selector("ul[id='nav_left']>li[class='dropdown']>div[class='dropdown-button']").click()
# 博客园网站点击精华按钮,用css定位
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
time.sleep(2)
driver.find_element_by_css_selector("li#sidenav_pick>[title='精华区博文']").click()

# 如果不是唯一属性,再加一个[],类似于xpath里的and
# 博客园网站点击订阅按钮,用css通过两个属性一起定位
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
time.sleep(2)
driver.find_element_by_css_selector("li[id='sidenav_subscription'][class='sidenav-item ']").click()
# 博客园网站搜索框输入222,用css通过两个属性一起定位
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
time.sleep(2)
driver.find_element_by_css_selector("input[name='w'][id='zzk_search_input']").send_keys('222')

# 标签:nth-child()下标
# 博客园网站点击注册按钮,用css方法找标签的下标定位
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
time.sleep(2)
driver.find_element_by_css_selector("li#navbar_login_status>a:nth-child(5)").click()
# 
# input:first-child 第一个input
# 博客园网站点击博客园图标,用css方法找标签的第一个下标定位
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
time.sleep(2)
driver.find_element_by_css_selector("ul#nav_left>li:first-child").click()

# input:last-child最后一个input
# 博客园网站点击发现按钮,用css方法找标签的最后一个下标定位
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
time.sleep(2)
driver.find_element_by_css_selector("ul#nav_left>li:last-child").click()

# input:nth-last-child(2)倒数第二个input
# 博客园网站点击怀旧按钮,用css方法找标签的倒数第二个下标定位
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.cnblogs.com/')
time.sleep(2)
driver.find_element_by_css_selector("ul#nav_left>li:nth-last-child(2)>a").click()


 

#浏览器
from selenium import webdriver
import time
driver = webdriver.Chrome()
#打开悟空系统
driver.get("http://101.133.169.100:8088/index.html")
#设置窗体长1200宽720
driver.set_window_size(1200,800)
time.sleep(5)
#窗体设置最大化
driver.maximize_window()
time.sleep(5)
#获取浏览器title,网页标签的名字
title=driver.title
print(title)
#获取当前页面URL
url=driver.current_url
print(url)
#刷新浏览器
driver.refresh()
time.sleep(5)
#回退浏览器
driver.back()
time.sleep(5)
#前进浏览器
driver.forward()
time.sleep(5)
#关闭浏览器
driver.quit()

#动作事件
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://101.133.169.100:8088/index.html")
#输入框输入内容:用户名输入框输入111
driver.find_element_by_xpath("//input[@type='text']").send_keys("111")
time.sleep(5)
#清空输入框内容:清空用户名输入框内容
driver.find_element_by_xpath("//input[@type='text']").clear()
time.sleep(5)
#点击控件:点击登录按钮
driver.find_element_by_css_selector(".el-form-item__content>button").click()


#属性方法获取
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://101.133.169.100:8088/index.html")
#获取控件尺寸:获取用户名输入框尺寸,输出长和宽
size = driver.find_element_by_xpath("//input[@type='text']").size
print(size)
#获取输入框默认值:获取用户名输入框中的默认值
at = driver.find_element_by_xpath("//input[@type='text']").get_attribute("placeholder")
print(at)
#获取文本框信息:获取悟空CRM系统文本框信息
text = driver.find_element_by_css_selector('.title').text
print(text)
# 判断控件是否加载完成:判断用户名输入框是否加载完成,输出加载结果,结果为布尔类型,True/Flase
dis = driver.find_element_by_xpath("//input[@type='text']").is_displayed()
print(dis)
#如果用户名输入框加载完成,向用户名输入框中输入111,如果没有加载完成输入222
if dis==True:
    driver.find_element_by_xpath("//input[@type='text']").send_keys("111")
#输入内容查看输入框回显值:获取用户名输入框中的回显值,固定传value
    value=driver.find_element_by_xpath("//input[@type='text']").get_attribute('value')
    print(value)
    time.sleep(5)
else:
    time.sleep(5)
    driver.find_element_by_xpath("//input[@type='text']").send_keys("222")
driver.quit()

#鼠标事件
from selenium import webdriver
#先导入鼠标事件的类
from selenium.webdriver.common.action_chains import ActionChains
import time
driver = webdriver.Chrome()
driver.get("https://www.huodongxing.com/login")
time.sleep(2)
#定位活动行网站上的全国按钮
ele = driver.find_element_by_css_selector('.hdx-feature-head-bottom-new>.auto-width>div>.city-select>p')
time.sleep(2)
#鼠标悬浮
ActionChains(driver).move_to_element(ele).perform()
time.sleep(2)
#右击控件
ActionChains(driver).context_click(ele).perform()
time.sleep(2)
#双击控件
ActionChains(driver).double_click(ele).perform()
#点击按钮进行验证
driver.find_element_by_css_selector(".geetest_radar_tip_content").click()
time.sleep(2)
#定位拖拽控件,将控件向x方向偏移50,y方向不偏移
source= driver.find_element_by_css_selector(".geetest_slider_button")
ActionChains(driver).drag_and_drop_by_offset(source,50,0).perform()
time.sleep(3)
#定位拖拽控件,将控件拖到另一个控件的位置
target= driver.find_element_by_css_selector(".geetest_feedback")
ActionChains(driver).drag_and_drop(source,target)


# 键盘事件+等待时间
from selenium import webdriver
import time
#导入键盘事件的类
from selenium.webdriver.common.keys import Keys
#导入等待时间的类
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
ele=WebDriverWait(driver,10,0.5).until(EC.presence_of_element_located((By.XPATH, "//input[@id='kw']")))
ele.send_keys("软件测试")
driver.maximize_window()
# 退格:将百度搜索框输入的软件测试文字删除一个字
driver.find_element_by_xpath("//input[@id='kw']").send_keys(Keys.BACK_SPACE)
# 隐式等待时间:最大等待5s,按实际等待时间处理
driver.implicitly_wait(5)
# 空格:在百度搜索框中输入空格
driver.find_element_by_xpath("//input[@id='kw']").send_keys(Keys.SPACE)
# ctrl:复制百度搜索框中的内容并粘贴
driver.find_element_by_xpath("//input[@id='kw']").send_keys(Keys.CONTROL,'a')
driver.find_element_by_xpath("//input[@id='kw']").send_keys(Keys.CONTROL,'c')
# 需要鼠标点击一下控件才能继续ctrl+v,否则看不出效果
driver.find_element_by_xpath("//input[@id='kw']").click()
driver.find_element_by_xpath("//input[@id='kw']").send_keys(Keys.CONTROL,'v')
# 回车
driver.find_element_by_xpath("//input[@id='kw']").send_keys(Keys.ENTER)
#强制等待时间
time.sleep(2)
driver.quit()


# 切换句柄/焦点+截图
# 打开新的窗体时,如果句柄或者焦点不在新的窗体,没有办法定位新窗体中的控件
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
#截图,图片保存以png格式,格式为图片保存路径/图片名称.png,图片存储路径必须要存在的路径
driver.get_screenshot_as_file("D:/test.png")
driver.maximize_window()
# 获取所有句柄
print(driver.window_handles)
# 获取当前句柄信息
print(driver.current_window_handle)
driver.find_element_by_css_selector("div[id='s-top-left']>a:nth-child(2)").click()
# 获取所有句柄,输出的列表,与之前未打开新窗口时比对
print(driver.window_handles)
# 获取当前句柄信息
print(driver.current_window_handle)
# 切换句柄,用列表形式,python中以0开头
driver.switch_to.window(driver.window_handles[1])
# 获取当前句柄信息,查看句柄是否切换成功
print(driver.current_window_handle)
time.sleep(2)
driver.quit()



# alert弹框处理
# alert弹框的处理练习
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get(r'file:\D:\测试\课程\web端ui自动化\testAlert.html')
#调出弹框
driver.execute_script("prom()")
time.sleep(5)
# 给输入框传入数据
driver.switch_to.alert.send_keys("测试")
time.sleep(5)
# 获取文字信息
print(driver.switch_to.alert.text)
time.sleep(5)
# 点击正向按钮(确定)
driver.switch_to.alert.accept()
time.sleep(5)
# 点击反向按钮(取消)
# driver.switch_to.alert.dismiss()
driver.quit()


# 切换iframe(在html里加了另一个html,有基层iframe就要切换几次)
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://mail.163.com/")
driver.maximize_window()
time.sleep(8)
# 第一种方式:有id或者name属性,如果id和name不会变化,跟id或者name对应的属性值
#driver.switch_to.frame("x-URS-iframe")
#第二种方式:通用方法,通过xpath切换iframe:先用xpath定位iframe,切换到该iframe,再输入内容
dd = driver.find_element_by_xpath("//div[@id='loginDiv']/iframe")
driver.switch_to.frame(dd)
driver.find_element_by_name('email').send_keys("111")
# 返回上一层frame
# driver.switch_to.parent_frame()
# 切换到最外层
# driver.switch_to.default_content()
time.sleep(2)
driver.quit()


# 下拉选择框
from selenium import webdriver
from selenium.webdriver.support.select import Select
import time
driver = webdriver.Chrome()
#打开写成网站
driver.get("https://www.ctrip.com/?sid=155952&allianceid=4897&ouid=index")
driver.maximize_window()
#定位房间数按钮
s=driver.find_element_by_id("J_roomCountList")
# 通过文本信息选择
Select(s).select_by_visible_text("2间")
time.sleep(2)
# 通过索引选择,0是第一个
Select(s).select_by_index(0)
time.sleep(2)
# 通过value选择,每一个选项都有对应value值
Select(s).select_by_value("2")
time.sleep(2)
driver.quit()


#时间控件
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://www.ctrip.com/?sid=155952&allianceid=4897&ouid=index")
driver.maximize_window()
# 普通时间控件,需按格式传日期内容
ele=driver.find_element_by_id('HD_CheckIn')
ele.clear()
ele.send_keys("2021-05-20")
# 特殊时间控件,有readonly属性,需要先移除readonly属性,再按格式传日期内容
# 有id属性
#js="document.getElementById('HD_CheckIn').removeAttribute('readonly')"
#有name属性
#js="document.getElementByName('HD_CheckIn').removeAttribute('readonly')"
#没有id和name,传标签类型
#js="document.getElementByTagName('input').removeAttribute('readonly')"
# #执行js
# driver.execute_script(js)
# driver.find_element_by_name('HD_CheckIn').send_keys("2021-05-19 23:50:50")
time.sleep(2)
driver.quit()


# 实现滚动条的处理
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://www.hao123.com/")
driver.maximize_window()
# 滚动到页面最底部
# 定义js,给一个较大的值
js = "var q=document.documentElement.scrollTop=10000"
# 执行js
driver.execute_script(js)
time.sleep(2)
# 滚到最顶部
#定义js,值给0
js = "var q=document.documentElement.scrollTop=0"
# 执行js
driver.execute_script(js)
time.sleep(2)
#滚动到窗体的高度的50%
driver.execute_script("window.scrollTo(0,document.body.scrollHeight*0.5)")
time.sleep(2)
# 根据当前滚动条位置向上滚200
driver.execute_script("window.scrollBy(0,-200)")
time.sleep(2)
driver.quit()


#批量运行casetestrunner.py代码:
#导入unittest框架,time,os,sys模块
import unittest
import time
import os,sys
#导入report包里的HTMLTesRunner这个类,用来生成报告
from report import HTMLTestRunner


#定义两个变量,sys.arg[0]拿到的是D:/测试/课程/06web端ui自动化/Uiframe0test/testrunner.py完整的路径
# 获取当前py文件路径地址,并进行路径分割(分割成dirname是目录路径和filename文件名称是py文件名字)
dirname,filename=os.path.split(os.path.abspath(sys.argv[0]))
print(dirname,filename)
case_path = ".\\case\\"
result = dirname+"\\report\\"
#定义一个方法
def Creatsuite():
    #定义单元测试容器
    #初始化unittest.testsuite的对象,testsuite是测试套件,存储多个test方法
    testunit = unittest.TestSuite()

    #定搜索用例文件的方法,在case_path中查找所有py文件,放入discover里
    discover = unittest.defaultTestLoader.discover(case_path, pattern='*.py', top_level_dir=None)

    #将测试用例加入测试容器中
    #把所有py文件遍历一遍,把所有的test方法都拿出来
    for test_suite in discover:
        #先执行一次拿到第一个py文件,py文件的所有test方法加载到test_suite里,再执行一次遍拿到第二个py文件,再把第二个py文件里的test方法放到test_suite里
        for casename in test_suite:
            testunit.addTest(casename)
        #print testunit
    return testunit
#定义一个变量,调用creatsuite方法,所有py文件中的test方法
test_case = Creatsuite()

#获取系统当前时间
now = time.strftime('%Y-%m-%d-%H_%M_%S', time.localtime(time.time()))
day = time.strftime('%Y-%m-%d', time.localtime(time.time()))

#定义报告存放路径,日期的文件路径,支持相对路径
tdresult = result + day

if os.path.exists(tdresult): # 检验文件夹路径是否已经存在
    #定义今天日期年月日时分秒的result的html报告的名称
    filename = tdresult + "\\" + now + "_result.html"
    #打开文件,以二进制形式写内容
    fp = open(filename, 'wb')
    #定义测试报告,把执行结果放入runner里
    runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
                                           title='测试报告',
                                           description='执行情况:')

    #运行测试用例
    runner.run(test_case)
    fp.close()  #关闭报告文件
else:
    os.mkdir(tdresult) # 创建测试报告文件夹
    filename = tdresult + "\\" + now + "_result.html"
    fp = open(filename, 'wb')
    #定义测试报告
    runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
                                             title='Selenium测试报告',
                                             description='执行情况:')

    #运行测试用例
    runner.run(test_case)
    fp.close()  #关闭报告文件

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值