Python+Selenium+xlrd+Pytest+Allure实现Web自动化测试

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、测试数据:

lxmfp123456成功登录
hongxmmissyou513成功登录
p123456Email格式错误,请重新输入或者昵称格式错误,请重新输入
lxmf密码格式错误,请重新输入
aaaap123456密码错误
lxmfppp123密码错误


5、Allure生成HTML报告(Terminal运行):

1)执行脚本生成ALLURE报告:

pytest --alluredir ./report/allure_raw --clean-alluredir

2)渲染到界面上,以网页形式展示:

allure serve report/allure_raw

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值