接口自动化测试步骤几乎是一样的,可以用excel写测试用例,通过ddt实现数据驱动,而web自动化不符合测试步骤一致的要求,用ddt实现数据驱动并不理想,这时候可以使用关键字驱动实现web自动化。

一、封装浏览器操作

browser.py,我放在了common包下面

import allure
from selenium.webdriver import Chrome
from selenium.webdriver import ActionChains, Keysclass Browser:def __init__(self,driver:Chrome):self.driver = driverself.action = ActionChains(driver)def visit(self,url):"""访问网页"""self.driver.get(url)def click(self,locator):"""浏览器点击"""el = self.get_element(locator)el.click()def send_keys(self,locator,text):""" 在输入框中输入信息"""el = self.get_element(locator)el.send_keys(text)def get_element(self,locator):"""查找元素"""try:return self.driver.find_element(*locator)except Exception as e:self.attach_screenshot("没有找到元素")raise edef attach_screenshot(self,pic_name="截图"):"""截图"""png = self.driver.get_screenshot_as_png()allure.attach(png,name=pic_name,attachment_type=allure.attachment_type.PNG)def press_enter(self):"""回车"""self.action.send_keys(Keys.ENTER).perform()

二、创建浏览器对象

conftest.py,创建夹具,把浏览器对象放进去

import pytest
from selenium import webdriver
from selenium.webdriver.chromium.options import ChromiumOptions
@pytest.fixture()
def browser():"""创建一个浏览器对象"""option = ChromiumOptions()option.page_load_strategy = 'eager'  # 设置浏览器的属性,不等所有的元素页面加载完成driver = webdriver.Chrome(options=option)driver.implicitly_wait(8)driver.maximize_window()yield driverdriver.quit()

三、用yaml文件写测试用例

一个用例一个yaml文件(里面可以写列表和字典,使用数据很方便)login_baidu.yaml,我用的百度登录

-action : visitinput :url : "https://www.baidu.com/"-action: clickinput:locator:['xpath','(//a[@name="tj_login"])[2]']
-action: send_keysinput:locator:['xpath','//input[@placeholder="手机号/用户名/邮箱"]']text : "15988889999"
-action : send_keysinput :locator : ['xpath','//input[@placeholder="密码"]']text : "123"
-action : press_enterinput :

四、创建方法提取yaml测试数据,调用封装的浏览器方法执行

keywords_fun.py,我放在了cases包下面

import yaml
from common.browser import Browserdef read_yaml(file):with open(file,encoding='utf-8') as cases:data = yaml.safe_load(cases)return datadef keywords(browser,file):"""关键字测试用例"""b = Browser(browser)steps = read_yaml(file)for step in steps:method = getattr(b,step["action"]) #方法是类的属性,通过获取属性的方式获取方法if step["input"]:method(**step["input"])   #调用方法,用**解字典包获取参数else:method()

五、执行测试用例

导入keywords_fun.py中的keywords方法,将编写的yaml文件和浏览器对象(之前创建的夹具)传入,点击执行

from cases.keywords_fun import keywordsdef test_login(browser):keywords(browser=browser,file="login_baidu.yaml")

总结:

1、以上代码可以实现百度网页登录

2、注意点:浏览器操作封装,pytest夹具的创建,根据yaml文件中的action字段调用浏览器方法

关键字驱动实现web自动化相关推荐

  1. Web自动化测试(一)—— Web自动化入门

    ​​​​​​​其他Web测试知识参考:Web自动化测试 目录 一.自动化介绍 1.什么是自动化 2.什么是自动化测试 2.1.自动化测试能解决什么问题? 2.2.自动化测试相关知识 3.什么是Web自 ...

  2. web自动化--python+selenium自动化

    目录 自动化测试用例 遵循原则 自动化测试用例设计 测试点转为测试用例的原则 验证码自动化方法 自动化测试模型 线性测试 模块化驱动测试 数据驱动测试 参数化的方式: CSV文件 Excel文件 关键 ...

  3. Selenium自动化框架:数据驱动、关键字驱动和混合

    什么是Selenium框架? 这个 Selenium框架 是一种代码结构,它使代码维护变得简单而高效.如果没有框架,用户可以将"c"框架产生了一些有益的结果,比如增加了代码可重用性 ...

  4. 【Web自动化测试——代码篇十二】自动化测试模型——数据驱动测试和关键字驱动测试...

    自动化测试模型可以看作自动化测试框架与工具设计的思想.随着自动化测试技术的发展,演化为以下几种模型: 线性测试 模块化驱动侧式 数据驱动测试 关键字驱动测试 数据驱动测试 前一篇所讲的模块化驱动测试能 ...

  5. 自动化测试里的数据驱动和关键字驱动思路的理解

    初次接触自动化测试时,对数据驱动和关键字驱动不甚理解,觉得有点故弄玄须,不就是参数和函数嘛!其实其也体现了测试所不同与开发的一些特点(主要指系统测试),以及和对技术发展的脉络的展现. 1.录制/回放的 ...

  6. Robot Framework 实战中学习(Web自动化)

    Robot Framework 自动化框架可以实现的功能及其丰富,首先从Web自动化开始总结学习(由于引用Selenium2Library,因此与Selenium页面元素定位及操作类似),后面也会依次 ...

  7. Selenium Web 自动化 - 项目实战(三)

    Selenium Web 自动化 - 项目实战(三) 2016-08-10 目录 1 关键字驱动概述 2 框架更改总览 3 框架更改详解   3.1 解析新增页面目录   3.2 解析新增测试用例目录 ...

  8. git关闭密码自动存储_RobotFramework实战篇PC端web自动化demo及持续集成

    自己学习自动化的话,除了要选好一款框架之外,还要选好一个用来练习的项目.这里小编推荐新手入门可以考虑一下Robotframework这个框架,原因:该框架的学习成本比较低,很多功能都是现成的,而且脚本 ...

  9. 十年测开如何理解自动化测试里的数据驱动、关键字驱动思路

    初次接触自动化测试时,对数据驱动和关键字驱动不甚理解,觉得有点故弄玄须,不就是参数和函数其嘛!其实其也体现了测试所不同与开发的一些特点(主要指系统测试),以及和对技术发展的脉络的展现. 01.录制/回 ...

最新文章

  1. POJ 1860 Currency Exchange
  2. 5 加盐_小葱拌豆腐的5种做法,收藏起来慢慢学!
  3. Android NDK学习笔记5:引用类型管理
  4. vue 子级拿值_vue 父组件通过$refs获取子组件的值和方法详解
  5. Jupyter Notebook安装 nbextensions 插件
  6. JQuery和JavaScript常用方法的一些区别
  7. matlab在图像处理中的应用论文,MATLAB在数字图像处理中的应用
  8. Git异常:fatal: could not create work tree dir 'XXX': No such file or directory
  9. GBDT 特征提取(2)
  10. web压力测试工具(持续更新)
  11. MATLAB--数字图像处理 频域图像分析
  12. 关于simulink仿真中出现的积分器问题
  13. 图像处理网络资源【转】
  14. Facebook改名,元宇宙非区块链不可
  15. FPGA仿锆石代码风格组合电路时序电路严格分开之(一)8通道16位AD采集
  16. httpwatch详解
  17. 字节日常实习生面试 无了~
  18. 关于Wasserstein GAN的理解
  19. 从前慢-深入理解JVM-篇章2
  20. 字符型指针,数组,字符串赋值

热门文章

  1. OK1028A-C适配RTL8822CE wifi模块
  2. 小程序使用微信同声传译进行语言播报(数字播报问题)
  3. apm官网上apm planner 2 和 Mission Planner有什么区别
  4. KWP 2000协议详解
  5. CWPP(云工作负载保护平台)
  6. 量化交易策略 - 对敲策略
  7. 天天敲代码会使人变聪明嚒?
  8. HTML学习 1(基本格式、标题标签、段落标签、图片标签)
  9. 解决edge浏览器bing无法使用的问题
  10. 火影忍者服务器维护时间,火影忍者ol所有大区停机更新公告