selenium使用unittest框架如何封装token实现免登录和验证码登录

一、selenium使用unittest框架如下:
在这里插入图片描述
case下放置要执行的文件,文件名要以test开头
config可以添加一个py文件,文件内放置基本ip,如:

HOST=www.baidu.com

二、run.py代码如下:

from BeautifulReport import BeautifulReport
import unittest
import time

current = time.strftime('%Y-%m-%d-%H-%M-%S')	# 生成时间,月份一定要小写,分钟一定要大写
report_name = current + '-report.html'		# 生成测试报告文件名,参考上面框架中的report下的html报告名
test_suite = unittest.defaultTestLoader.discover('./case', pattern='test*py')	# 执行case文件夹内所有以test开头的py文件,要执行的文件名命名一定要以test开头
runner = BeautifulReport(test_suite)
runner.report('selenium自动化测试', report_name, './report')		# 生成的报告名

if __name__ == "__main__":	# run.py执行入口,在run.py执行就可以执行case下所有的文件
    unittest.main()

三、get_token.py文件写获取token的代码,并封装

from selenium import webdriver	# 导入webdriver
from PIL import Image	# 导入截图插件
import time


def get_driver():	# 封装打开chrome浏览器
    driver = webdriver.Chrome()
    return driver


def get_token(ob):	# 封装get_token,通过账号密码验证码方式登录
    driver = ob
    driver.get('登录界面的url')
    driver.maximize_window()
    driver.find_element_by_xpath('账号输入框的xpath').send_keys('你的账号')	# 点击账号输入框并输入账号
    driver.find_element_by_xpath('密码输入框的xpath').send_keys('你的密码')	# 点击密码输入框并输入密码
    driver.save_screenshot('a.png')		# 登录界面截图
    element = driver.find_element_by_xpath('验证码xpath')	# 找到验证码的xpath定位
    left = element.location['x']	# 验证码图片左边的坐标
    top = element.location['y']		# 验证码图片上面的坐标
    right = left + element.size['width']	# 验证码图片右边的坐标
    bottorm = top + element.size['height']		# 验证码图片底部的坐标
    im = Image.open('a.png')	# 打开之前截图的登录界面图片
    im = im.crop((left, top, right, bottorm))	# 在登录界面图片根据验证码上下左右坐标定位到验证码图片
    im.save('b.png')	# 将验证码图片截图
    code = input('请输入正确的验证码:')
    driver.find_element_by_xpath('验证码输入框xpath').send_keys(code)		# 点击输入框并输入验证码
    driver.find_element_by_xpath('登录按钮xpath').click()	# 点击登录按钮,即可登录
    time.sleep(5)
    '''获取token'''
    token = driver.execute_script('return localStorage.getItem("token");')		# 获取token
    header = {"X-Access-Token": token}
    return header


if __name__ == "__main__":
    print(get_token())
    

四、case里的py执行用例文件如何编写

import unittest  # 导入unittest
from time import sleep
from config.config import HOST	# 导入config文件中的HOST
from tools.get_token import get_token
from tools.get_token import get_driver
import sys,os
sys.path.append(os.path.dirname(os.path.dirname(__file__)))

class Partment(unittest.TestCase):   #定义测试类,继承unittest.TestCase
    '''部门管理'''
    # 测试之前初始化
    @classmethod
    def setUpClass(self):
        self.driver = get_driver()
        self.header = get_token(self.driver)
        self.driver.get(HOST+'路径')
        self.driver.implicitly_wait(15)

    # 定义测试结束后的动作
    @classmethod
    def tearDownClass(self):
        # 关闭浏览器,恢复测试数据等操作
        sleep(2)
        self.driver.quit()

    def test_01_search_seccess(self):
        '''第一条用例'''
        pass


if __name__ == "__main__":
    unittest.main()
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sophiasofia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值