Python+Selenium框架设计篇

这篇博客介绍了如何使用Python结合Selenium构建自动化测试框架。通过定义页面对象,将页面交互细节封装,测试人员只需关注输入数据,提高了测试效率。示例中展示了登录页面的接口设计,包括账号输入、密码输入和提交操作。同时,利用BasePage基类实现通用的页面打开和元素定位方法。
摘要由CSDN通过智能技术生成

Python+Selenium框架设计篇
比如测试一个登陆页面:盛祺登录 ,执行测试的人员传递不同的数据到帐号、密码框就可以了,而不应该去顾虑:
页面是否已经加载完成?怎样定位到帐号输入框?怎样定位到登陆按钮等等问题。
这些问题全部交由登陆页面的“页面对象”去解决并封装起来,只提供给测试人员三个接口方法:1.帐号输入接口、
2.密码输入接口、3.提交接口。

运行的文件:xl_login.py

xl_login.py

# coding=utf-8

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2020/12/18
@author: ctt
Project: Python+Selenium框架设计篇
比如测试一个登陆页面:盛祺登录 ,执行测试的人员传递不同的数据到帐号、密码框就可以了,而不应该去顾虑:
页面是否已经加载完成?怎样定位到帐号输入框?怎样定位到登陆按钮等等问题。
这些问题全部交由登陆页面的“页面对象”去解决并封装起来,只提供给测试人员三个接口方法:1.帐号输入接口、2.密码输入接口、3.提交接口。
'''

# 3.导入模块

from selenium import webdriver
from selenium.webdriver.common.by import By
from basePage import BasePage
import time


class LoginPage(BasePage):
    """
    盛祺首页登陆页面
    继承自基础页面BasePage
   """
    # 点击帐号输入框
    showAccount_loc = (By.ID, 'showAccount')
    # 定位帐号输入框
    username_loc = (By.ID, 'userAccount')
    # 点击密码输入框
    showPassword_loc = (By.ID, 'showPassword')
    # 定位密码输入框
    password_loc = (By.ID, 'userPassword')
    # 定位登陆按钮
    submit_loc = (By.XPATH, '//*[@id="dengluBtn"]')

    # 点击账号输入框操作
    def type_showAccount(self):
        self.find_element(*self.showAccount_loc).click()
    # 输入用户名操作
    def type_username(self, username):
        self.find_element(*self.username_loc).send_keys(username)

    # 点击密码输入框操作
    def type_showPassword(self):
        self.find_element(*self.showPassword_loc).click()
    # 输入密码操作
    def type_password(self, password):
        self.find_element(*self.password_loc).send_keys(password)

    # 点击登陆按钮操作
    def submit(self):
        self.find_element(*self.submit_loc).click()

if __name__ == '__main__':  # 测试登陆
    # 预打开页面
    base_url = '自己的网址'
    # 页面title
    title = '广东财经大学资产管理系统'
    # 准备好待输入的用户名和密码
    username = 'ctt'
    password = '123456'

    # 打开Chrome浏览器
    driver = webdriver.Firefox()
    driver.maximize_window()
    # 登陆页面初始化
    login = LoginPage(driver, base_url, title)
    # 打开盛祺登录首页
    login.open()
    # 点击用户名输入框
    login.type_showAccount()
    # 输入用户名
    login.type_username(username)
    # 点击密码输入框
    login.type_showPassword()
    # 输入密码
    login.type_password(password)
    # 点击登陆
    login.submit()
    time.sleep(2)

    driver.quit()

basePage.py 文件内容

# coding=utf-8🔥

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 3.导入模块
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


class BasePage(object):
    """
     基础页面,提供给其他页面继承
     """

    def __init__(self, driver, base_url, title):
        """
       初始化
       """
        self.driver = driver
        self.base_url = base_url
        self.title = title


    def _open(self, url):
        """
        私有方法,打开url参数指定的页面,
        并检查打开是否正确
        """
        self.driver.get(url)
        # 显式等待10秒,如果打开页title与预期不符或者超时,抛出异常
        WebDriverWait(self.driver, 10).until(EC.title_is(self.title))


    def open(self):
        """
        公共方法,调用私有方法_open()打开链接
        """
        self._open(self.base_url)


    def find_element(self, *loc):
        """
        定位指定元素
        """
        # 显式等待元素,超过10秒未找到则抛出超时异常(TimeoutException)
        # presence_of_element_located: 不关心元素是否可见,只关心元素是否存在在页面中
        # visibility_of_element_located: 不仅找到元素,并且该元素必须可见
        WebDriverWait(self.driver, 15).until(EC.visibility_of_element_located(loc))
        return self.driver.find_element(*loc)


if __name__ == '__main__':
    driver = webdriver.Firefox()
    driver.maximize_window()
    page = BasePage(driver, '自己网址','自己网址的标题')
    page.open()
    driver.quit()

目录结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值