当前位置: 首页 > news >正文

selenium进阶之web自动化项目框架搭建(Python版)

web自动化项目框架搭建

1、项目结构
web自动化框架的设计,同接口自动化框架一样,采用分层设计。

文件或目录说明
common常用模块,常用的一些函数封装
testcases用例模块,所有的测试用例
test_data用例数据
logs日志目录
reports报告
settings.py配置
main.py项目入口

2、settings.py

import os
# 项目根目录
BASE_DIR = os.path.dirname(os.path.abspath(__file__))# 测试用例路径
TEST_CASE_DIR = os.path.join(BASE_DIR, 'testcases')# 项目主机
PROJECT_HOST = 'https://blog.csdn.net'# 接口信息
INTERFACE = {'login': PROJECT_HOST + '/testleaf'
}# 日志配置
LOG_CONFIG = {'name': 'project','filename': os.path.join(BASE_DIR, 'logs', 'testleaf.log'),# 'encoding': 'utf-8',# 'fmt': None,# 'when': 'd',# 'interval': 1,# 'backup_count': 7,'debug': True
}# 测试账户信息
TEST_NORMAL_USERNAME = 'admin'
TEST_NORMAL_PASSWORD = '888888'

3、main.py

import pytest
import settingsif __name__ == '__main__':pytest.main(['-s', '-v', settings.TEST_CASE_DIR])

4、common\log_handler.py

import logging
from logging.handlers import TimedRotatingFileHandlerdef get_logger(name, filename, encoding='utf-8', fmt=None, when='d', interval=1, backup_count=7, debug=False):logger = logging.getLogger(name)logger.setLevel(logging.DEBUG)# 文件处理器的等级一般情况一定比控制台要高if debug:file_level = logging.DEBUGconsole_level = logging.DEBUGelse:file_level = logging.WARNINGconsole_level = logging.INFOif fmt is None:fmt = '%(levelname)s %(asctime)s [%(filename)s-->line:%(lineno)d]:%(message)s'file_handler = TimedRotatingFileHandler(filename=filename, when=when, interval=interval, backupCount=backup_count, encoding=encoding)file_handler.setLevel(file_level)console_handler = logging.StreamHandler()console_handler.setLevel(console_level)formatter = logging.Formatter(fmt=fmt)file_handler.setFormatter(formatter)console_handler.setFormatter(formatter)logger.addHandler(file_handler)logger.addHandler(console_handler)return loggerif __name__ == '__main__':import settingslog = get_logger(**settings.LOG_CONFIG)log.info('我是普通信息')log.warning('我是警告信息')

5、testcases\test_login.py

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import settingsclass TestLogin:def test_login(self):# 1. 打开浏览器with webdriver.Chrome() as driver:# 2. 访问登录页面driver.get(settings.INTERFACE['login'])# 3. 登录# 3.1 定位用户名输入框wait = WebDriverWait(driver, timeout=3)username_input = wait.until(EC.visibility_of_element_located(('xpath', '//input[@name="phone"]')))# 3.2 输入用户名username_input.send_keys(settings.TEST_NORMAL_USERNAME)# 3.3 定位密码输入框# 3.4 输入密码# 3.5 定位登录按钮# 3.6 点击登录按钮# 4. 断言登录:根据右上角的退出按钮的出现assert wait.until(EC.visibility_of_element_located(('xpath', '//a[text()="退出"]')))
http://www.lryc.cn/news/146343.html

相关文章:

  • qt设计界面
  • 《C和指针》笔记12: 存储类型(自动变量、静态变量和寄存器变量)
  • 无限计算力:探索云计算的无限可能性
  • 【赋权算法】Python实现熵权法
  • docker之 Consul(注册与发现)
  • 用NeRFMeshing精确提取NeRF网络中的3D网格
  • 权限提升-Windows本地提权-AT+SC+PS命令-进程迁移-令牌窃取-getsystem+UAC
  • 深入了解Kubernetes(k8s):安装、使用和Java部署指南(持续更新中)
  • Oracle的学习心得和知识总结(二十九)|Oracle数据库数据库回放功能之论文三翻译及学习
  • 新版100句学完7000雅思单词
  • MATLAB图论合集(三)Dijkstra算法计算最短路径
  • MySQL 8.0.xx 版本解决group by分组的问题
  • 设计模式—原型模式(Prototype)
  • 【pytorch】Unfold和Fold的互逆操作
  • 【AI】《动手学-深度学习-PyTorch版》笔记(二十一):目标检测
  • 畅捷通T+用户中locked勒索病毒后该怎么办?勒索病毒解密数据恢复
  • 神仙般的css动画参考网址,使用animate.css
  • 江西抚州新能源汽车3d扫描零部件逆向抄数测量改装-CASAIM中科广电
  • 数据结构学习 --4 串
  • 探索Kotlin K2编译器和Java编译器的功能和能力
  • 如何安装chromadb
  • vue实现把字符串中的所有@内容,替换成带标签的
  • 「MySQL-00」MySQL在Linux上的安装、登录与删除
  • 8月29-31日上课内容 第五章
  • 数据库导出工具
  • ChatGPT 制作可视化柱形图突出显示第1名与最后1名
  • 前端学习记录~2023.8.10~JavaScript重难点实例精讲~第6章 Ajax
  • 2023年Java核心技术第九篇(篇篇万字精讲)
  • C#上位机中的单例应用思考
  • Python分享之redis