1. 导入类
from selenium import webdriver
from Uiframe0test.public.login import Mylogin
from Uiframe0test.public.log_create import createlog
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import time
import unittest
import os
2. SetUp方法
class TestShouye(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.get('http://171.2.3.121:8088/')
self.driver.maximize_window()
time.sleep(3)
print("starttime:"+time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time())))
3. tearDown方法
def tearDown(self):
filedir = 'D:/test/screenshot/'
TIME = time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))
if not os.path.exists(filedir):
os.makedirs(os.path.join('D:/','test','screenshot'))
print('endTime:'+TIME)
screen_name = filedir+TIME +'.png'
self.driver.get_screenshot_as_file(screen_name)
self.driver.quit()
4.用例1- 验证title和url
def testShouYe_wukong01(self):
'''验证title和url'''
Mylogin(self.driver).login()
title = self.driver.title
url = self.driver.current_url
self.assertEqual('悟空CRM',title)
self.assertIn('http://171.2.3.191:8088',url)
5.用例2- 浏览器前进、后退、刷新
def testShouYe_wukong02(self):
'''测试浏览器前进、后退、刷新'''
Mylogin(self.driver).login()
self.driver.find_element_by_xpath("//div[@class='nav-items-container']/div/a[2]/div").click()
time.sleep(3)
self.driver.back()
TongXunLu = self.driver.find_element_by_xpath("//div[@class='container']/ul/a[7]/li/span").is_displayed()
self.assertTrue(TongXunLu)
time.sleep(3)
self.driver.forward()
YiBiaoPan = self.driver.find_element_by_xpath("//div[@class='container']/ul/a[1]/li/span").is_displayed()
self.assertTrue(YiBiaoPan)
time.sleep(3)
self.driver.refresh()
self.assertTrue(YiBiaoPan)
6.用例3- 测试首页导航文案显示是否正常
def test_wukong03(self):
'''测试首页导航文案显示是否正常'''
Mylogin(self.driver).login()
BanGong = self.driver.find_element_by_xpath("//div[@class='nav-items-container']/div/a[1]/div")
KeHuGuanLi = self.driver.find_element_by_xpath("//div[@class='nav-items-container']/div/a[2]/div")
ShangYeZhiNeng = self.driver.find_element_by_xpath("//div[@class='nav-items-container']/div/a[3]/div")
XiangMuGuanLi = self.driver.find_element_by_xpath("//div[@class='nav-items-container']/div/a[4]/div")
self.assertEqual("办公",BanGong.text)
self.assertEqual("客户管理",KeHuGuanLi.text)
self.assertEqual("商业智能",ShangYeZhiNeng.text)
self.assertEqual("项目管理",XiangMuGuanLi.text)
7.用例4- 办公页面左侧元素检查
def test_wukong04(self):
'''办公页面左侧元素检查'''
Mylogin(self.driver).login()
time.sleep(3)
ele0 = self.driver.find_element_by_class_name('button-name')
ele1 = self.driver.find_element_by_xpath("//div[@class='container']/ul/a[1]/li")
ele2 = self.driver.find_element_by_xpath("//div[@class='container']/ul/a[2]/li")
ele3 = self.driver.find_element_by_xpath("//div[@class='container']/ul/a[3]/li")
ele4 = self.driver.find_element_by_xpath("//div[@class='container']/ul/a[4]/li")
ele5 = self.driver.find_element_by_xpath("//div[@class='container']/ul/a[5]/li")
ele6 = self.driver.find_element_by_xpath("//div[@class='container']/ul/a[6]/li")
ele7 = self.driver.find_element_by_xpath("//div[@class='container']/ul/a[7]/li")
self.assertEqual('快速创建',ele0.text)
self.assertEqual('工作台', ele1.text)
self.assertEqual('日程', ele2.text)
self.assertEqual('任务', ele3.text)
self.assertEqual('公告', ele4.text)
self.assertEqual('日志', ele5.text)
self.assertEqual('审批', ele6.text)
self.assertEqual('通讯录', ele7.text)
8.用例5- 快速创建日志入口
def testShouYe_wukong05(self):
'''快速创建日志入口'''
Mylogin(self.driver).login()
time.sleep(3)
ele = self.driver.find_element_by_class_name('button-name')
ActionChains(self.driver).move_to_element(ele).perform()
time.sleep(3)
self.driver.find_element_by_xpath("//div[@class='quick-add-content']/p[1]/span").click()
time.sleep(3)
RiBao = self.driver.find_element_by_xpath("//div[@class='new-journal']/div[2]/div[1]/div[1]/div/div/div/div[2]")
self.assertIn("日报", RiBao.text)
9.用例6- 创建日志入口
def testShouYe_wukong06(self):
'''创建日志入口'''
Mylogin(self.driver).login()
time.sleep(3)
self.driver.find_element_by_xpath("//div[@class='container']/ul/a[5]/li").click()
time.sleep(3)
self.driver.find_element_by_xpath("//main[@class='el-main']/div/div/button/span").click()
time.sleep(3)
RiBao = self.driver.find_element_by_xpath("//div[@class='new-journal']/div[2]/div[1]/div[1]/div/div/div/div[2]")
self.assertIn("日报",RiBao.text)
10.用例7- 创建日志
def testShouYe_wukong07(self):
'''创建日志'''
Mylogin(self.driver).login()
createlog(self.driver).log()
self.driver.find_element_by_xpath("//div[@class='form']/div[1]/div/textarea").send_keys('今日完成')
self.driver.find_element_by_xpath("//div[@class='form']/div[2]/div/textarea").send_keys('明日计划')
self.driver.execute_script('window.scrollTo(0,document.body.scrollHeight*0.5)')
time.sleep(3)
self.driver.find_element_by_xpath("//div[@class='form']/div[3]/div/textarea").send_keys('遇到问题')
time.sleep(3)
self.driver.find_element_by_xpath("//div[@class='btn-group']/button[1]/span").click()
ele = self.driver.find_element_by_xpath("//main[@class='el-main']/div/div/button/span")
self.assertEqual("写日志",ele.text)
11.用例8- 新建日报-添加发送人
def testShouYe_wukong08(self):
'''新建日报-添加发送人'''
Mylogin(self.driver).login()
createlog(self.driver).log()
self.driver.find_element_by_xpath("//div[@class='form']/div[1]/div/textarea").send_keys('今日完成1')
js = 'var q = document.documentElement.scrollTop = 10000'
self.driver.execute_script(js)
time.sleep(3)
self.driver.find_element_by_class_name("sent-img").click()
time.sleep(3)
self.driver.find_element_by_xpath(
"//div[@id='pane-user']/div[2]/div[1]/label/span[1]/span").click()
time.sleep(3)
self.driver.find_element_by_xpath("//div[@class='popover-footer']/button[1]").click()
time.sleep(5)
self.driver.find_element_by_xpath("//div[@class='btn-group']/button[1]/span").click()
ele = self.driver.find_element_by_xpath("//main[@class='el-main']/div/div/button/span")
self.assertEqual("写日志",ele.text)
12.用例9- 筛选日报-被筛选的日报存在
def testShouYe_wukong09(self):
'''筛选日报-被筛选的日报存在'''
Mylogin(self.driver).login()
time.sleep(2)
self.driver.find_element_by_xpath("//div[@class='container']/ul/a[5]/li").click()
time.sleep(2)
self.driver.find_element_by_xpath("//div[@id='pane-1']/div/div[1]/div[1]/div/div/span/span/i").click()
time.sleep(2)
self.driver.find_element_by_xpath("//html/body/div[2]/div[1]/div[1]/ul/li[4]").click()
time.sleep(2)
ele = self.driver.find_element_by_xpath("//div[@class='el-tabs__content' ]/div[1]/div/div[1]/div[2]/div/input")
ele.clear()
ele.send_keys("2020-12-19")
time.sleep(3)
self.driver.find_element_by_xpath("//div[@class='el-tabs__content' ]/div[1]/div/div[1]/div[3]/div/div/span/span/i").click()
time.sleep(2)
self.driver.find_element_by_xpath("//html/body/div[4]/div[1]/div[1]/ul/li[2]").click()
time.sleep(2)
username1 = self.driver.find_element_by_xpath("//div[@class='el-tabs__content']/div[1]/div/div[1]/div[1]/div/div/input").get_attribute('value')
username2 = self.driver.find_element_by_xpath("//div[@class='el-tabs__content']/div[1]/div/div[2]/div[1]/div[1]/div[1]/div[2]/p[1]/span[1]")
self.assertEqual(username1,username2.text)
13.用例10- 筛选日报-被筛选的日报不存在
def testShouYe_wukong10(self):
'''筛选日报-被筛选的日报不存在'''
Mylogin(self.driver).login()
time.sleep(2)
self.driver.find_element_by_xpath("//div[@class='container']/ul/a[5]/li").click()
time.sleep(2)
self.driver.find_element_by_xpath("//div[@id='pane-1']/div/div[1]/div[1]/div/div/span/span/i").click()
time.sleep(2)
self.driver.find_element_by_xpath("//html/body/div[2]/div[1]/div[1]/ul/li[1]").click()
time.sleep(3)
text = self.driver.find_element_by_xpath("//div[@class='el-tabs el-tabs--top']/div[2]/div[1]/div/div[2]/p/button/span").text
self.assertEqual('没有更多了',text)
14.用例11- 编辑个人信息
def testShouYe_wukong11(self):
'''编辑个人信息'''
Mylogin(self.driver).login()
time.sleep(2)
self.driver.find_element_by_xpath("//div[@class='navbar']/span[2]/div[2]/i").click()
time.sleep(2)
self.driver.find_element_by_xpath("//html/body/div[2]/div/div[1]").click()
time.sleep(2)
self.driver.find_element_by_xpath("//div[@class='header-handle']/button[2]").click()
time.sleep(2)
name = self.driver.find_element_by_xpath("//div[@class='el-dialog__body']/form/div[1]/div/div/input")
name.clear()
name.send_keys("luoxiaohua")
time.sleep(2)
email = self.driver.find_element_by_xpath("//div[@class='el-dialog__body']/form/div[2]/div/div/input")
email.clear()
email.send_keys("123456@qq.com")
time.sleep(2)
self.driver.find_element_by_xpath("//div[@class='el-dialog__body']/form/div[3]/div/div/div[1]/input").click()
self.driver.find_element_by_xpath("//div[@class='el-scrollbar']/div[1]/ul/li[2]").click()
time.sleep(2)
self.driver.find_element_by_xpath("//div[@class='person-container']/div[6]/div/div[3]/span/button[1]").click()
time.sleep(5)
newname = self.driver.find_element_by_xpath("//div[@class='section']/div[2]/div[1]/div/div[2]").text
self.assertEqual('luoxiaohua',newname)
15.用例12- 通讯录搜索
def testShouYe_wukong12(self):
'''通讯录搜索'''
Mylogin(self.driver).login()
time.sleep(3)
self.driver.find_element_by_xpath("//div[@class='container']/ul/a[7]/li").click()
time.sleep(3)
search = self.driver.find_element_by_xpath("//div[@id='pane-1']/div[1]/input")
search.send_keys('hua')
search.send_keys(Keys.ENTER)
time.sleep(3)
result = self.driver.find_element_by_xpath("//div[@class='staff']/div[2]/div[2]/div/div[1]").text
self.assertIn("hua",result)
16.用例13- 开通授权文本信息验证
def testShouYe_wukong13(self):
'''开通授权文本信息验证'''
Mylogin(self.driver).login()
time.sleep(3)
ele = self.driver.find_element_by_xpath("//div[@class='navbar']/span[1]/button")
ActionChains(self.driver).move_to_element(ele).perform()
time.sleep(3)
detail1 = self.driver.find_element_by_xpath("//div[@class='auth-content']/div[1]")
detail2 = self.driver.find_element_by_xpath("//div[@class='detail']")
detail3 = self.driver.find_element_by_xpath("//span[@class='phone']")
print(detail1.text)
print(detail2.text)
print(detail3.text)
self.assertEqual("您暂未开通授权",detail1.text)
self.assertEqual("为了给您提供更好的服务支持\n建议您购买官方授权", detail2.text)
self.assertEqual("400-0812-558", detail3.text)
17.testrunner.py
import unittest
import time
import os,sys
from Uiframe0test.report import HTMLTestRunner
dirname,filename=os.path.split(os.path.abspath(sys.argv[0]))
print(dirname,filename)
case_path = ".\\case\\web\\"
result = dirname+"\\report\\"
def Creatsuite():
testunit = unittest.TestSuite()
discover = unittest.defaultTestLoader.discover(case_path, pattern='*.py', top_level_dir=None)
for test_suite in discover:
for casename in test_suite:
testunit.addTest(casename)
return testunit
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):
filename = tdresult + "\\" + now + "_result.html"
fp = open(filename, 'wb')
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()
18.public-login
import time
class Mylogin(object):
def __init__(self, driver):
self.driver = driver
def login(self):
self.driver.find_element_by_name("username").send_keys("15696925209")
self.driver.find_element_by_name("password").send_keys("123456")
self.driver.find_element_by_xpath("//div[@class='el-form-item']/div[1]").click()
time.sleep(5)