0
点赞
收藏
分享

微信扫一扫

selenium 重构-----代码分层优化

白衣蓝剑冰魄 2022-03-30 阅读 172

通过对上一篇文章中脚本的观察发现,上面的代码将函数和其他测试代码放在同一个文件中。随着自动化测试的深入,测试的内容和范围会逐步增加,这样的编码方式,不利于提高代码的可扩展性和可维护性。

上一篇文章:对selenium中元素定位方法进行重构再封装

为了更好的理解代码分层的理念,将根据同样的项目逐步进行深入挖掘和优化。如图所示为初步分层后的代码结构图。其中booking_tickets.py为测试代码文件;文件functions.py主要存放常用的基础方法等。
在这里插入图片描述
其中,基础常用方法代码如下:

# coding = utf-8
# Date: 2022/3/28 16:23

'''基础常用方法'''

from datetime import date,timedelta
from selenium import webdriver
from selenium.webdriver.common.by import By

# 将driver设置为全局变量
driver = webdriver.Chrome()


def return_driver():
    '''
    函数return_driver()的功能是返回driver对象
    :return:driver对象
    '''
    return driver

def open_base_site(url):
    '''
    打开网页
    :param url:要打开的网页地址
    :return:
    '''
    driver.get(url)

def max_window():
    '''
    浏览器窗口最大化
    :return:
    '''
    driver.maximize_window()


def close_driver():
    '''
    关闭浏览器
    :return:
    '''
    driver.quit()


# 以下为定义函数部分,其目的是返回今天后的第n天后的日期,格式为“2022-03-28”
def date_n(n):
    return str((date.today() + timedelta(days=int(n))).strftime('%Y-%m-%d'))

def id(element):
    '''
    根据元素id属性值来返回元素定位语句。
    :param element: id属性值
    :return:按照id属性来定位元素的语句
    '''
    return driver.find_element(By.ID, element)

def xpath(element):
    '''
    使用xpath定位元素
    :param element:
    :return:按照xpath方式来定位元素的语句
    '''
    return driver.find_element(By.XPATH, element)

测试代码文件的代码如下:

# coding = utf-8
# Date: 2022/3/28 16:22

'''测试火车票查询的页面元素'''
from functions import return_driver, open_base_site, id, xpath, max_window, date_n, close_driver
from time import sleep

# url:12306首页
url = 'https://www.12306.cn/index/'
# 以下变量用于定义出发城市和到达城市
from_station, to_station = '成都', '重庆'
# tomorrow变量:出发日期
tomorrow = date_n(1)

# 打开浏览器
driver = return_driver()
# 打开12306首页
open_base_site(url)
# 设置窗口最大化
max_window()
# 输入出发城市
xpath('//input[@id="fromStationText"]').click()
xpath('//input[@id="fromStationText"]').send_keys(from_station)
xpath('//div[@id="citem_2"]').click()
# 输入到达城市
xpath('//input[@id="toStationText"]').click()
xpath('//input[@id="toStationText"]').send_keys(to_station)
xpath('//div[@id="citem_1"]').click()
# 输入出发时间
id('train_date').clear()
id('train_date').send_keys(tomorrow)
# 点击查询
id('search_one').click()
# 切换到新窗口
driver.switch_to.window(driver.window_handles[1])
# 点击D2244车次的预订
xpath('//tr[starts-with(@id,"ticket_76000D22440N_01_06")]/td/a').click()
# 等待页面加载
sleep(2)
'''账号登录'''
# 输入用户名
id('J-userName').send_keys('qaws12342')
# 输入密码
id('J-password').send_keys('qwedsa123')
# 关闭浏览器
close_driver()
举报

相关推荐

0 条评论