web自动化测试框架
创始人
2024-03-30 09:04:52
0

本文介绍web自动化测试框架 

 ●Base:用来对Selenium API进行二次封装。

对Selenium API进行二次封装的目的是简化一些复杂的操作,但是千万不要为了封装而封装。

封装好后,其他页面类可以集成basepage,调用这些方法。

from selenium.webdriver.support.ui import WebDriverWait
'''
这里我们定义一个名为"Base"的类,对Selenium WebDriver提供的API进行二次封装
'''class Base(object):def __init__(self, driver):'''调用该类的时候给其传递一个driver:param driver:'''self.driver = driverdef split_locator(self, locator):'''分解定位表达式,如"id,kw",拆分后返回定位器"id"和定位器的值"kw":param locator: 定位方法+定位表达式组合字符串,如"id,kw":return: locator_dict[by], value:返回定位方式和定位表达式'''if len(locator.split(',')) == 3:by = locator.split(',')[0]  # 定位器value = locator.split(',')[1] + ',' + locator.split(',')[2]else:by = locator.split(',')[0]  # 定位器value = locator.split(',')[1] # 定位器值# 这里是为了方便,所以简写了定位器locator_dict = {'id': 'id','name': 'name','class': 'class name','tag': 'tag name','link': 'link text','plink': 'partial link text','xpath': 'xpath','css': 'css selector',}if by not in locator_dict.keys():raise NameError("Locator Err!'id',only 'name','class','tag','link','plink', 'xpath','css' can be used.")return locator_dict[by], valuedef get_element(self, locator, sec=20):"""获取一个元素:param locator: 定位方法+定位表达式组合字符串,用逗号分隔,如"id,kw":param sec: 等待秒数:return: 如果元素可找到则返回element对象,否则返回False"""by, value = self.split_locator(locator)try:element = WebDriverWait(self.driver, sec, 1).until(lambda x: x.find_element(by=by, value=value))return elementexcept Exception as e:raise edef get_elements(self, locator, sec=20):"""获取一组元素:param locator: 定位方法+定位表达式组合字符串,用逗号分隔,如"id,kw":return: elements"""by, value = self.split_locator(locator)try:elements = WebDriverWait(self.driver, 60, 1).until(lambda x: x.find_elements(by=by, value=value))return elementsexcept Exception as e:raise eif __name__ == '__main__':from selenium import webdriverfrom time import sleepdriver = webdriver.Chrome()driver.get('https://www.baidu.com/')a = "id1,kw"bp = Base(driver)bp.get_element(a).send_keys('11111')# bp.get_element("plink,地图").click()sleep(2)driver.quit()

 

●Common:用来放置一些公共的函数或方法文件,如前面封装的解析YAML文件、解析CSV文件的函数。

●Config:用来放置测试项目中的配置信息文件,如系统的IP地址、端口。

测试配置分离--使用yaml文件写入配置信息,在测试用例中读取配置,需要有对应的解析文件函数。

websites:host: localhost:81

 

 

●Data:用来放置CSV文件,内容是测试用例参数化用到的数据,也可以放置其他类型的数据文件,如Excel和JSON文件。

测试数据分离---将测试数据放在csv/yaml文件中,在测试用例文件读取测试数据进行参数化传入数据。

●Report:用来放置测试执行的报告。

●Test:用来测试相关文件,其中子目录PageObject用来存放页面对象,子目录TestCase用来放置测试用例。

相关内容

热门资讯

不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
安卓文字转语音tts没有声音 安卓文字转语音TTS没有声音的问题在应用中比较常见,通常是由于一些设置或者代码逻辑问题导致的。本文将...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
APK正在安装,但应用程序列表... 这个问题可能是由于以下原因导致的:应用程序安装的APK文件可能存在问题。设备上已经存在同名的应用程序...
报告实验.pdfbase.tt... 这个错误通常是由于找不到字体文件或者文件路径不正确导致的。以下是一些解决方法:确认字体文件是否存在:...