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

本文介绍了如何搭建一个Web自动化项目框架,包括分层设计、settings.py中的配置(如测试用例路径、接口信息和日志设置)、main.py作为项目入口以及使用Selenium进行登录测试的示例。同时展示了如何在common模块中处理日志输出。
摘要由CSDN通过智能技术生成

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 settings

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

4、common\log_handler.py

import logging
from logging.handlers import TimedRotatingFileHandler

def 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.DEBUG
        console_level = logging.DEBUG
    else:
        file_level = logging.WARNING
        console_level = logging.INFO

    if 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 logger

if __name__ == '__main__':
    import settings
    log = 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 settings

class 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()="退出"]')))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

testleaf

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

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

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

打赏作者

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

抵扣说明:

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

余额充值