Python+Selenium PO模式Web自动化测试实战

本文详细介绍了使用Python结合Selenium实现PO模式的Web自动化测试过程,包括项目结构设计、BASE层代码封装、Excel文件读写操作、测试案例编写、以及具体的PO层模块如登录、退出和查询等实战步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、项目结构

2、BASE层封装代码

# -- coding: UTF-8 --
import datetime
import os
from selenium.webdriver.support.select import Select


class BasePage:

    # 构造函数,初始化方法
    def __init__(self, driver):
        self.driver = driver
        self.driver.maximize_window()
        self.driver.implicitly_wait(5)

    # 获取URL
    def geturl(self):
        self.driver.get(self.url)

    # 定位元素
    def locator_element(self, loc):
        return self.driver.find_element(*loc)

    def locator_elements(self, loc):
        return self.driver.find_elements(*loc)

    def get_text(self, loc):
        return self.locator_element(loc).text

    # 重构send_keys方法
    def send_keys(self, loc, value):
        self.locator_element(loc).send_keys(value)
        # self.driver.find_element(*loc).send_keys(value)

    def clear(self, loc):
        self.locator_element(loc).clear()

    # 重构下拉框操作
    def select(self, loc, value):
        sel = Select(self.locator_element(loc))
        sel.select_by_visible_text(value)

    # 重构click方法
    def click(self, loc):
        self.locator_element(loc).click()

    # frame切换
    def switch_to_frame(self, frame):
        self.driver.switch_to.frame(frame)

    # frame切换返回
    def switch_to_default_content(self):
        self.driver.switch_to.default_content()

    # 切换窗口
    def switch_to_window(self, title):
        for handle in self.driver.window_handles:
            self.driver.switch_to.window(handle)
            if title == self.driver.title:
                break

    # 截屏,默认在项目目录下生成图片
    def save_screenshot(self, filename):
        self.driver.save_screenshot(filename)

    # 截屏,可以指定文件路径
    def get_screenshot_as_file(self, filename):
        pro_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))    # 获取当前项目的根路径
        screenshot_dir = os.path.join(pro_dir, "screenshot")    # 根路径下创建文件夹screenshot
        if not os.path.exists(screenshot_dir):
            os.makedirs(screenshot_dir)
        data_file = datetime.datetime.now().strftime('%Y%m%d')  # 当日日期
        screenshot_today_dir = os.path.join(screenshot_dir, data_file)  # 当前日期文件夹
        if not os.path.exists(screenshot_today_dir):
            os.mkdir(screenshot_today_dir)  # 不存在则创建日期文件夹
        now_time = datetime.datetime.now().strftime('%H%M%S')  # 时间戳%H%M%S%f
        filename = f'{filename}_{now_time}.png'  # 拼接文件名 时间戳+文件名+.png
        filepath = os.path.join(screenshot_today_dir, filename)
        self.driver.get_screenshot_as_file(filepath)

    def quit(self):
        self.driver.quit()

3、Excel文件读写封装

# -- coding: UTF-8 --
import datetime
import openpyxl


class OperateExcel:

    # @staticmethod
    # def get_objec
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Buaixiao

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

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

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

打赏作者

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

抵扣说明:

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

余额充值