fengzhuang.py对元素定位、输入和点击等操作进行封装。
sign.py定义sign函数:打开百度网页,点击登录,输入用户名密码和电机登录等操作。
testcase_sign.py编辑测试用例
testsuit_sign.py 测试套件以及输出测试报告,HTMLTestRunner模块可单独下载,用于生成测试报告
文件夹:fz
文件名:fengzhuang.py
from selenium import webdriver
import time
class Commom(object):
def __init__(self):
self.driver=webdriver.Chrome()
self.driver.implicitly_wait(100)
self.driver.maximize_window()
def open_url(self,url):
self.driver.get(url)
# self.driver.implicitly_wait(50)
def locateelement(self,locate_type,value):
# el=None
if locate_type=='id':
el=self.driver.find_element_by_id(value)
elif locate_type=='name':
el= self.driver.find_element_by_name(value)
elif locate_type=='class':
el=self.driver.find_element_by_class_name(value)
elif locate_type=='tag':
el=self.driver.find_element_by_tag_name(value)
elif locate_type=='text':
el=self.driver.find_element_by_link_text(value)
elif locate_type=='partial':
el=self.driver.find_element_by_partial_link_text(value)
elif locate_type=='xpath':
el=self.driver.find_element_by_xpath(value)
elif locate_type=='css':
el=self.driver.find_element_by_css_selector(value)
if el is not None:
return el
def input_data(self,locate_type,value,data):
el=self.locateelement(locate_type,value)
el.send_keys(data)
def get_text(self,locate_type,value):
el=self.locateelement(locate_type,value)
return el.text
def click(self,locate_type,value):
el=self.locateelement(locate_type,value)
time.sleep(3)
el.click()
def close_driver(self):
self.driver.quit()
# def __del__(self):
# self.driver.quit()
if __name__ == '__main__':
com = Commom()
com.open_url('http://www.baidu.com')
# com.locateelement('id','kw')
com.input_data('id','kw','asd')
com.click('id','su')
文件夹:test
文件名:sign.py
from fz.fengzhuang import Commom
from selenium import webdriver
import time
class Sign(Commom):
def sign(self,user,password):
self.open_url('https://www.baidu.com')
self.click('css','#u1 > a.s-top-login-btn.c-btn.c-btn-primary.c-btn-mini.lb')
self.click('css','#TANGRAM__PSP_11__footerULoginBtn')
self.input_data('id','TANGRAM__PSP_11__userName',user)
self.input_data('id','TANGRAM__PSP_11__password',password)
self.click('id','TANGRAM__PSP_11__submit')
if __name__ == '__main__':
Sign().sign('17802595663','lyp19940622')
文件夹:test
文件名:testcase_sign.py
from sign import Sign
import unittest
import time
class Testcase(unittest.TestCase):
def setUp(self):
print('start')
def tearDown(self):
print('end')
#正确用户名和密码
def test_001(self):
ss=Sign()
ss.sign('17802595663', 'lyp19940622')
# time.sleep(5)
data=ss.get_text('xpath', '/html/body/div/div[2]/div[3]/a[2]/span[2]')
self.assertEqual('飞蓬heart',data)
#错误用户名和正确密码
def test_002(self):
ss = Sign()
ss.sign('17802595662','lyp19940622')
# time.sleep(5)
data=ss.get_text('xpath','/html/body/div[4]/div[2]/div[2]/div/div/div/div/div/div[1]/form/p[2]/span/a')
self.assertEqual('找回密码',data)
#正确用户名和错误密码
def test_003(self):
ss=Sign()
ss.sign('17802595663','lyp19940620')
# time.sleep(5)
data=ss.get_text('xpath','/html/body/div[4]/div[2]/div[2]/div/div/div/div/div/div[1]/form/p[2]/span/a')
self.assertEqual('找回密码',data)
#空用户名和空密码
def test_004(self):
ss=Sign()
ss.sign('','')
# time.sleep(5)
data=ss.get_text('xpath','/html/body/div[4]/div[2]/div[2]/div/div/div/div/div/div[1]/form/p[2]/span')
self.assertEqual('请您输入手机/邮箱/用户名',data)
if __name__ == '__main__':
unittest.main()
文件夹:test
文件名:testsuit_sign.py
from testcase_sign import Testcase
import unittest
from HTMLTestRunner import HTMLTestRunner
class Testsuit(unittest.TestCase):
def testsuit(self):
mysuit=unittest.TestSuite()
case_list=['test_001','test_002','test_003','test_004']
for case in case_list:
mysuit.addTest(Testcase(case))
# unittest.TextTestRunner(verbosity=2).run(mysuit)
with open('../signreport.html','wb')as f:
HTMLTestRunner(
stream=f,
title='测试报告',
description='百度登录测试',
verbosity=2
).run(mysuit)
if __name__ == '__main__':
unittest.main()