1、Pytest框架代码:
from readData import readExcel
from element import *
import allure
#登录模块
@allure.feature("登录模块")
class Test_login():
def setup_class(self): #执行前制执行一次
openUrl()
lst = readExcel("login",1,2)
#登录成功用例
@allure.story("登录成功用例")
@pytest.mark.parametrize("name,pwd,result",lst)
def test_01(self,name,pwd,result):
click_login() # 点击立即登录
user_login(name,pwd) # 用户登录
success_login(result) # 成功登录断言
close_login() # 退出登录
lst = readExcel("login", 3, 6)
#登录失败用例
@allure.story("登录失败用例")
@pytest.mark.parametrize("name,pwd,result", lst)
def test_02(self,name,pwd,result):
click_login() # 点击立即登录
user_login(name,pwd) # 用户登录
fail_login(result) # 失败登录断言
page_refresh() # 页面刷新
def teardown_class(self): #执行后制执行一次
quit_browen() # 退出浏览器
#申请贷款模块
# class Test_browwer():
# def setup_class(self):
# global driver
# driver = webdriver.Chrome() # 加载谷歌驱动
# driver.get("http://120.76.119.135/syunke/fw") # 打开p2p项目网页
# driver.maximize_window() # 网页最大化
# sleep(2)
#
# driver.find_element_by_link_text("立即登录").click()
# sleep(2)
# # 登录
# driver.find_element_by_name("email").send_keys("lxmf") # 输入账号
# driver.find_element_by_name("user_pwd").send_keys("p123456") # 输入密码
# driver.find_element_by_name("commit").click() # 点击登录
# sleep(2)
# driver.find_element_by_xpath(
# '//*[@id="fanwe_success_box"]/table/tbody/tr/td[2]/div[3]/input[1]').click() # 登录成功提示框点击确认
# sleep(2)
#
# #申请贷款成功用例
# def test_01(self):
# # 切换到申请贷款页
# above = driver.find_element_by_xpath('//*[@id="header"]/div[2]/div/ul/li[3]/a') # 定位悬停对象
# ActionChains(driver).move_to_element(above).perform() # 执行悬停
# driver.find_element_by_link_text('申请贷款').click() # 点击申请贷款
# sleep(2)
# driver.find_element_by_xpath('//*[@id="borrowlb"]/div/ul/li[1]/div[3]/a/img').click() # 点击立即申请
# sleep(2)
#
# # 借款标题
# title = driver.find_element_by_id("borrowtitle")
# title.clear()
# title.send_keys("测试标题")
# # 借款金额
# amount = driver.find_element_by_id("borrowamount")
# amount.clear()
# amount.send_keys(50000)
# # 还款周期
# driver.find_element_by_xpath('/html/body/div[2]/div[4]/div/form/div[1]/div[11]/dl/dt').click() # 点击还款周期
# driver.find_element_by_xpath('/html/body/div[2]/div[4]/div/form/div[1]/div[11]/dl/dd/a[2]').click() # 点击选中按月付款
# sleep(2)
#
# # 滚动条下滑600px
# js = "var action=document.documentElement.scrollTop=600"
# driver.execute_script(js)
#
# driver.find_element_by_xpath('/html/body/div[2]/div[4]/div/form/div[1]/div[12]/div/dl/dt').click() # 点击借款期限
# driver.find_element_by_xpath(
# '/html/body/div[2]/div[4]/div/form/div[1]/div[12]/div/dl/dd/a[3]').click() # 点击选中9个月
#
# # 年利率
# apr = driver.find_element_by_id('apr')
# apr.clear()
# apr.send_keys(15)
#
# # 借款描述
# teartext = driver.find_element_by_css_selector(".ke-edit-iframe")
# driver.switch_to.frame(teartext)
# btext = driver.find_element_by_xpath('/html/body')
# btext.clear()
# btext.send_keys("1")
# driver.switch_to.default_content()
#
# driver.find_element_by_id("publishBnt").click() # 点击提交审核
# sleep(2)
# driver.switch_to.alert.accept() # 弹框确认
# sleep(2)
#
# def test_02(self):
# pass
#
# def teardown_class(self):
# pass
if __name__ == '__main__':
pytest.main("-s")
2、Selenium操作元素代码:
from selenium import webdriver #selenium版本3.x
from time import sleep
import pytest #pytest版本5.x
from selenium.webdriver import ActionChains #操作鼠标模块
from appium import webdriver
def openUrl(): #加载驱动,打开网页
global driver
driver = webdriver.Chrome() # 加载谷歌驱动
driver.get("http://120.76.119.135/syunke/fw") # 打开p2p项目网页
driver.maximize_window() # 网页最大化
sleep(2)
def click_login(): # 点击立即登录
driver.find_element_by_link_text("立即登录").click()
sleep(2)
def user_login(name,pwd): #用户登录
# 登录
driver.find_element_by_name("email").send_keys(name) # 输入账号
driver.find_element_by_name("user_pwd").send_keys(pwd) # 输入密码
driver.find_element_by_name("commit").click() # 点击登录
sleep(2)
def success_login(result): #成功登录断言
text = driver.find_element_by_xpath('//*[@id="fanwe_success_box"]/table/tbody/tr/td[2]/div[2]').text # 获取登录成功的文本信息
assert text == result # 登录成功断言
driver.find_element_by_xpath(
'//*[@id="fanwe_success_box"]/table/tbody/tr/td[2]/div[3]/input[1]').click() # 登录成功提示框点击确认
sleep(2)
def close_login(): #退出登录
# 退出登录
driver.find_element_by_xpath('//*[@id="J_account"]/span').click() # 点击您好,xxx
driver.find_element_by_link_text("退出").click() # 点击退出
sleep(2)
def fail_login(result): #失败登录断言
text = driver.find_element_by_xpath('//*[@id="fanwe_error_box"]/table/tbody/tr/td[2]/div[2]').text # 获取登录失败的文本信息
assert text == result # 登录失败断言
driver.find_element_by_xpath(
'//*[@id="fanwe_error_box"]/table/tbody/tr/td[2]/div[3]/input[1]').click() # 登录失败提示框点击确认
def page_refresh(): #页面刷新
driver.refresh()
sleep(3)
def quit_browen(): #退出浏览器
sleep(5)
driver.close()
3、xlrd实现数据分离:
import xlrd #xlrd版本1.x,2.0以上版本不识别xlsx,只识别xls
def readExcel(sheet,statRow,endRow):
xls = xlrd.open_workbook(r"dataFile\data.xlsx") #打开Excel文件
sht = xls.sheet_by_name(sheet) #选择sheet页
row=sht.nrows #获取总行数
col=sht.ncols #获取总列数
lsts = []
for r in range(statRow-1,endRow):
if col > 1:
lst = []
for c in range(0,col):
s = sht.cell_value(r,c)
if type(s)==float: #python读取Excel的数字是浮点型,要做类型处理
s = int(s)
lst.append(s)
lsts.append(lst)
return lsts
if __name__ == '__main__':
lst = readExcel("login", 3, 6)
print(lst)
4、测试数据:
lxmf | p123456 | 成功登录 |
hongxm | missyou513 | 成功登录 |
p123456 | Email格式错误,请重新输入或者昵称格式错误,请重新输入 | |
lxmf | 密码格式错误,请重新输入 | |
aaaa | p123456 | 密码错误 |
lxmf | ppp123 | 密码错误 |
5、Allure生成HTML报告(Terminal运行):
1)执行脚本生成ALLURE报告:
pytest --alluredir ./report/allure_raw --clean-alluredir
2)渲染到界面上,以网页形式展示:
allure serve report/allure_raw