Python selenium —— selenium与自动化测试成神之路

2023-11-18

Python selenium —— selenium与自动化测试成神之路

忽然想谈谈自动化的学习路径,因为发现很多人总是急于求成,不懂该如何学习。

在群里总是会遇到很多人问低级问题,写了一个selenium脚本,却执行失败,跑到群里来问,大神,这里为什么会报错?很多都是明显的语法问题,一问方知,今天刚刚学selenium,之前也没有语法基础,没学过Java,没学过Python,就跑来搞selenium,想玩自动化。每当看到这样的同学,总是很想吐槽。今天博主也不是想要吐槽,只是想跟大家谈谈我认为的正确的自动化学习路径。

1. 首先要搞明白几个问题

本来想写一些东西,但忽然发现虫师已经对这个问题总结很到位了,所以我也就不想多说什么,放上链接,学自动化测试之前,先去看看吧

在做自动化测试之前你需要知道的

自动化是用机器代替手工做一些事情。作为一个测试人员,做自动化一般是指接口自动化与UI自动化。(接口也是指对外的部分,通过各种协议,各系统或模块之间交流的接口。)接口性价比更高,但不代表UI自动化没有价值。

2. 编程语言基础

很多想学自动化测试的同学都忽略了编程语言的重要性。很大一部分测试人员不懂编程,也不想学编程,但如果你想要学习自动化,那编程是必须的!

你可能会觉得QTP就不需要编程,录制回放就可以了。这是大错特错的,QTP要想玩的溜,VB是必须的。selenium想要玩的溜,Java或者Python是必须的!(selenium并不局限于这两种语言,但是你用其他语言玩,别怪我没有提醒你,你会遇到很多麻烦,而且还找不到人能跟你交流,你的成长速度会慢得多)

很多人没有学语言,直接上来搞selenium,我认为这是一种本末倒置的行为,没有语言基础,想学会自动化,是走到了弯路上,到达目的地时间要更久。

那么学Java还是Python?这个要取决于你对那种语言更熟悉一些,同时要看测试团队所使用的语言,如果团队用Java,那你就学Java。如果你既没有语言基础,测试团队也没有指定的语言,那么我建议你学Python,Python相对Java更简单,学习成本要低一些。

确定了要学习的语言,博主便推荐一些学习资料:

  1. 如果你一点语言基础都没有,那么我推荐你先把《笨办法学Python》中的前45个练习照着敲一遍。(注意:必须得一个个手敲,代码学习重在实践),有个网站,英文版笨办法,推荐给你Learn Python The Hard Way,英文不好?OK,给你个中文版笨办法学Python 下载

  2. 如果你有学过一门语言,了解基本的数据结构和判断、循环之类的,或者你刚刚完成步骤0的练习,我推荐你这个阶段学习Python语言基础。这个阶段有好几本好书,当然,你只需要其中的一本就足够了:《Python核心编程》、《Python基础教程》、《Python简明教程》、《Python入门指南》、《Head First Python》等,这个你去百度便能百度到很多,去京东淘宝逛一逛,看销量最多的也便可知。当然,我推荐你《Python核心编程》,建议买本纸质书。至于其中的内容,你学习完成主干部分即可,最后面的几章关于网络编程、线程与进程的,可以先不看,当遇到这样的问题,可以再来补充这方面的知识。

  3. 跟着廖雪峰的网站学也是可以的 廖雪峰Python教程

好了,这两个阶段完成之后,我认为你做好了学习selenium的准备,可以开始学习selenium了。

3. selenium学习,脚本编写

接下来终于要到学习selenium的时候了,在这个时候,我需要你先去搞清楚几个问题:

  • selenium到底是什么?
  • selenium家族成员,selenium的结构组成。
  • selenium支持的语言,浏览器。selenium操作浏览器需要依赖的驱动,驱动版本与浏览器版本的关系。

然后还需要再简单学习一些前端的知识:

  • HTML(网页结构,各种标签)
  • Xpath(基本的定位要了解,轴的内容可以在有一定基础之后再学)
  • CSS(简单了解)
  • JavaScript(简单了解)
  • Firebug(开发者工具)的使用(这个经常会用到,必须熟悉,可在selenium学习中逐渐深入)
  • 网络基础知识

接下来就是学习selenium了,入门推荐虫师的《Selenium2自动化测试实战–基于Python语言》,这本书比较基础,用来入门再合适不过,期间也可混杂着看一些博客,比如我的博客^_^,会给你不少帮助。

同时不要光看,一定要动手自己写代码,找一个网站,先练基础元素的定位与操作,推荐一个练手网站:http://sahitest.com/demo/index.htm

基本定位方式熟悉了,就是要对一个正式的网站进行实践了,你可以用你们公司的网站,也可以用某些门户网站,比如58、赶集等等,可以用selenium做一个小爬虫,爬取网站上的一些信息。这个过程中你会遇到各种坑,各种诡异的事情,不要怕,你一定要相信这些坑,前辈们早已替你趟过了。

一定要善用百度、Google,搞IT的,不会翻墙,不会百度,简直没有资格叫自己是XX工程师,Google的重要性我不想再多言,起码GitHub博客,百度的爬虫是爬不到的

4. 执行测试,脱离脚本阶段

恭喜你,你能写脚本了,能写小爬虫从网站上爬东西了,接下来,你得真正开始执行测试了。

在这个阶段,你必须学习的是Python的doctest和unittest

学习怎么用断言来添加检查点。

同时,你要学习怎么将代码中公共的部分抽出来,把测试和业务分离开,学习PageObject思想。

用testsuite来组织你的测试用例,并学习HTMLTestRunner下载,学习怎么输出报告。

5. 参数化、配置、日志、简单框架搭建

你已经能够用unittest组织用例,并输出报告了。这时候,你需要让你的测试更像个样子。

该学习参数化了,学习xlrd、xlwt操作excel文件,学习xml库操作xml文件,来配置你的数据源,实现参数化。

还需要学习configParser、pyyaml模块,进行配置文件的操作,将用例中的配置提取出来,写在配置文件里,这样要修改起来就容易多了。

然后还得学习logging库,学会怎么记录日志,写你自己的日志模块,在用例里加上日志记录。

到了这儿,基本上,就像个样子了。但是不能把这些东西放在一起,你就需要搭建一个轻量级的小框架,来分层组织你的代码与其他文件,可以参照我的博客简单分享一个轻量级自动化测试框架目录结构设计,还有博主的专栏 从零搭建一个自动化测试框架,教你怎么一步步搭建自己的框架。这下你就能把所有的东西分门别类管理起来,终于有点专业的样子了。

6. 自动执行,自动发送报告

简单的框架搭建好了,你也能够每次执行testsuite便可以得到测试报告了。但这时,你又不满足了。

是的,你应该让它自动执行,自动把报告发到你手里(或者你老大手里,当然,未成熟前不建议这么做)。

你该学习Jenkins了。别丧气,这个玩意很简单,你也只需要简单的配置便可以让你的测试任务在Jenkins上跑起来了。

还有,要自动发报告,简单学习下smtplib模块吧,它能让你的报告以邮件的形式发送到团队成员的手中。

7. 高级货,平台?分布式?界面?

是不是很有成就感了,QQ群里也有了很多人叫你大神。满满的虚荣心有木有?

不过,你就满足于这些吗?

当然不,还有更多想要做的。

UI的用例执行太慢了,整个分布式的执行怎么样?selenium的grid还没有研究呢。我可以用一台机器控制,让多台机器同时执行我的测试,想想简直碉堡了对不对。

还能怎么玩?搞个界面怎么样?学学Django、flask、web2py、web.py?挑一个,搞个界面,管理用例,管理测试执行,如何?

再搞搞数据分析,配个数据库,拿到历史执行数据,搞出来个报表怎么样?

看看request、suds、socket,把接口测试整进测试平台,怎么样?

单元测试?嘿嘿嘿,小case。

再集成个性能测试工具,一块搞到平台里去怎么样?

8. 现在,大神,可以拿你的平台去卖钱了

恭喜你,你绝对已经成神了。

你不仅仅是一个自动化测试工程师了,你已经是一个全栈开发工程师了。还有什么能难得到你的?

当然,别嘲笑我,博主也是在慢慢往上爬,这些也只是我个人的一些脑洞,一些想法,如果你也有什么想法,可以和博主多交流交流。

谨以此文,向广大的初学者指点一条博主认为不错的路径,具体你的学习方式、学习过程,见仁见智吧。


更多关于python selenium的文章,请关注我的CSDN专栏:Python Selenium自动化测试详解

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python selenium —— selenium与自动化测试成神之路 的相关文章

  • 使用 Python 编辑 RTF 文件

    也许这是一个愚蠢的问题 但我不明白 所以道歉 我有一个 RTF 文档 我想更改它 例如 有一个表 我想复制一行并以面向对象的方式更改代码中第二行中的文本 我认为 pyparsing 应该是可行的方法 但我摆弄了几个小时但没有明白 我没有提供
  • Tkinter 菜单删除项

    如何删除任何菜单项 例如我想删除 播放 self menubar Menu self root self root config menu self menubar self filemenu2 Menu self menubar self
  • 如何删除 PyCharm 中的项目?

    如果我关闭一个项目 然后删除该项目文件夹 则在 PyCharm 重新启动后 会再次创建一个空的项目文件夹 只需按顺序执行以下步骤即可 他们假设您当前在 PyCharm 窗口中打开了该项目 单击 文件 gt 关闭项目 关闭项目 在 PyCha
  • 指示电子邮件的类型

    我有以下自动化程序 它将电子邮件发送给我自己 并添加了特定的链接 import win32com client as win32 import easygui import tkinter as to from tkinter import
  • 检查 python 中命令行参数的数量

    我是蟒蛇新手 还是把脚弄湿了 我正在尝试做这样的事情 import sys if len sys argv lt 3 or lt len sys argv gt 3 print This script will compare two fi
  • 如何将 sql 数据输出到 QCalendarWidget

    我希望能够在日历小部件上突出显示 SQL 数据库中的一天 就像启动程序时突出显示当前日期一样 在我的示例中 它是红色突出显示 我想要发生的是 当用户按下突出显示的日期时 数据库中日期旁边的文本将显示在日历下方的标签上 这是我使用 QT De
  • python celery -A 的无效值无法加载应用程序

    我有一个以下项目目录 azima init py main py tasks py task py from main import app app task def add x y return x y app task def mul
  • OpenCV 跟踪器:模型未在函数 init 中初始化

    在视频的第一帧 我运行一个对象检测器 它返回对象的边界框 如下所示
  • python 中的 h2o 框架子集

    如何在 python 中对 h2o 框架进行子集化 如果 x 是一个 df 并且 Origin 是一个变量 那么在 pandas 中我们通常可以通过以下方式进行子集化 x x Origin AAF 但使用 h2o 框架会出现以下错误 H2O
  • Python MySQL 操作错误:1045,“用户 root@'localhost' 的访问被拒绝

    我试图通过以下方式从我的 python 程序访问数据库 db mysql connect host localhost user Max passwd maxkim db TESTDB cursor db cursor 但是 我在第一行代码
  • 在 Mac OS X 上安装 libxml2 时出现问题

    我正在尝试在我的 Mac 操作系统 10 6 4 上安装 libxml2 我实际上正在尝试在 Python 中运行 Scrapy 脚本 这需要我安装 Twisted Zope 现在还需要安装 libxml2 我已经下载了最新版本 2 7 7
  • NumPy 相当于 Keras 函数 utils.to_categorical

    我有一个使用 Keras 进行机器学习的 Python 脚本 我正在构建 X 和 Y 它们分别是特征和标签 标签的构建方式如下 def main depth 10 nclass 101 skip True output True video
  • 检索 geodjango 多边形对象的边界框

    如何在 geodjango 中获取 MultiPolygon 对象的边界框 在 API 中找不到任何内容http geodjango org docs geos html http geodjango org docs geos html
  • 如何从列表类别中对 pandas 数据框进行排序?

    所以我在下面有这个数据集 我想根据我的列表从 名称 列进行排序 以及按 A 升序和按 B 降序排序 import pandas as pd import numpy as np df1 pd DataFrame from items A 1
  • Discord.py 嵌入中禁用按钮/冻结按钮

    I m trying to make a replica of this bot in which when I press any of the buttons below it shows a dropdown menu and you
  • 如何通过函数注释指示函数需要函数作为参数,或返回函数?

    您可以使用函数注释 http www python org dev peps pep 3107 在python 3中指示参数和返回值的类型 如下所示 def myfunction name str age int gt str return
  • 根据多个阈值将 SciPy 分层树状图切割成簇

    我想将 SciPy 的树状图切割成多个具有多个阈值的簇 我尝试过使用 fcluster 但它只能削减一个阈值 例如 这是我从另一个问题中摘取的一段代码 import pandas data pandas DataFrame total ru
  • 在 numpy 中连接维度

    我有x 1 2 3 4 5 6 7 8 9 10 11 12 shape 2 2 3 I want 1 2 3 4 5 6 7 8 9 10 11 12 shape 2 6 也就是说 我想连接中间维度的所有项目 在这种特殊情况下我可以得到这
  • django jet 中的自定义徽标

    我目前正在尝试对 django 管理面板的皮肤进行一些定制 以使其更符合我们的品牌 目前我们使用 django jet 来美化管理面板 django jet 可以自定义 css html 吗 所有评论都说我应该更改一些 html 文件 但我
  • Jupyter Notebook:带有小部件的交互式绘图

    我正在尝试生成一个依赖于小部件的交互式绘图 我遇到的问题是 当我使用滑块更改参数时 会在前一个绘图之后完成一个新绘图 而我预计只有一个绘图会根据参数发生变化 Example from ipywidgets import interact i

随机推荐

  • idea 编译成功启动失败

    环境 Windows10 IntelliJ IDEA 2021 2 3 Ultimate Edition Apache Maven 3 8 3 SpringBoot版本 2 1 13 RELEASE 问题描述 SpringBoot项目启动时
  • html输入浮点型,input框限定输入值为浮点型代码分享

    本文主要为大家带来一篇对于input 框限定输入值为浮点型的js代码 小编觉得挺不错的 现在就分享给大家 也给大家做个参考 一起跟随小编过来看看吧 希望能帮助到大家 在一些项目中 比如金额用到浮点型 对于input 限定可以参考以下 fun
  • 信创-大数据平台CPU架构支持

    一 CDH和HDP CDP CDP数据中心类似于CDH和HDP 直接安装在硬件服务器上 目前支持市面上主流的X86服务器 包括国内海光服务器 CDH不支持ARM 以上两种大数据平台都仅支持x86架构 早在几年期RedHat联手clouder
  • IntelliJ Idea 常用快捷键 列表(实战终极总结!!!!)

    自动代码 常用的有fori sout psvm Tab即可生成循环 System out main方法等boilerplate样板代码 例如要输入for User user users 只需输入user for Tab 再比如 要输入Dat
  • SQL BOY 4 款脚本工具利器

    对于正在运行的mysql 性能如何 参数设置的是否合理 账号设置的是否存在安全隐患 你是否了然于胸 俗话说工欲善其事 必先利其器 定期对你的MYSQL数据库进行一个体检 是保证数据库安全运行的重要手段 今天和大家分享几个mysql 优化的工
  • Java多线程工具类之循环栅栏计数器

    Java多线程下循环计数器 本文主要内容 CyclicBarrier 下文中凯哥就用cycBar来代替 定义介绍 举例说明 代码演示 从源码来看原理及总结 CyclicBarrier与CountDownLatch 下文就用CountDown
  • 多分类SVM支持向量机的matlab仿真

    目录 一 理论基础 二 核心程序 三 仿真结论 一 理论基础 支持向量机 Support Vector Machine SVM 是一种在统计学习基础上发展起来的机器学习方法 其最大特点是根据Vapnik结构风险最小化原则 它的基本模型是定义
  • 从0到1:如何建立一个大规模多语言代码生成预训练模型

    国产AI辅助编程工具CodeGeeX是一个使用AI大模型为基座的辅助编程工具 帮助开发人员更快的编写代码 可以自动完成整个函数的编写 只需要根据注释或Tab按键即可 它已经在Java JavaScript和Python等二十多种语言上进行了
  • 判断机器大端小端的方法

    Big Endian和Little Endian的定义如下 1 Little Endian就是低位字节排放在内存的低地址端 高位字节排放在内存的高地址端 2 Big Endian就是高位字节排放在内存的低地址端 低位字节排放在内存的高地址端
  • DAC0832数模转换芯片介绍及使用教程

    1 芯片简介 DAC0832是采样频率为八位的D A转换芯片 集成电路内有两级输入寄存器 使DAC0832芯片具备双缓冲 单缓冲和直通三种输入方式 D A转换结果采用电流形式输出 若需要相应的模拟电压信号 可通过一个高输入阻抗的线性运算放大
  • Python小实验2—产生式系统实验

    文章目录 1 实验内容 2 实验目的 3 实验思路 4 源代码 5 实验结果 1 实验内容 设已知初始事实存放在综合数据库中 该动物身上有 暗斑点 长脖子 长腿 奶 蹄 推理机构的工作过程 1 从规则库中取出r 检查其前提是否可与综合数据库
  • QT之QChart绘制动态曲线

    QT之QChart绘制动态曲线 1 头文件 2 值写入QLineSeries 3 创建QChart对象 添加坐标轴 4 创建QChartView 5 QChartView显示到窗口 6 完整例子 QChart的系列 QChartSeries
  • 数据量太大,DOM节点加载过多,怎么保证前端在渲染的时候页面不会卡(性能优化)

    一 定时器分批渲染 既然一次渲染10万条数据会造成页面加载速度缓慢 那么我们可以不要一次性渲染这么多数据 而是分批次渲染 比如一次10000条 分10次来完成 这样或许会对页面的渲染速度有提升 然而 如果这13次操作在同一个代码执行流程中运
  • 苹果今天发布了 iOS 14.5 的第一个开发者预览版

    苹果今天发布了 iOS 14 5 的第一个开发者预览版 其中一个重要的新功能是 iPhone 12 机型在双 SIM 卡模式下对 5G 的全球支持 此前该功能仅在中国大陆地区提供 海外 iPhone 12 机型同时配备了物理 SIM 卡槽和
  • windows利用msys2安装minGW64

    目录 下载mysy2 配置国内源 安装minGW64 下载mysy2 官网下载非常慢 所以我们可以选择从清华大学的源下载 清华大学的msys2源说明 下载msys2 x86 64 20220603 exe 配置国内源 pacman 的配置
  • springboot启动feign项目报错:Service id not legal hostname

    正经学徒 佛系记录 不搞事情 在feign项目中 定义接口调用服务 FeignClient name eureka client public interface TestInterface GetMapping value get Str
  • 99款高质量免费(X)HTML/CSS模板

    99款高质量免费 X HTML CSS模板 01 T 20 在线预览下载该模板 02 Shape 在线预览下载该模板 03 Your Business 在线预览下载该模板 04 Solitude 在线预览下载该模板 05 Fashion C
  • C# BackgroundWorker控件使用方法

    在C Winform开发中 若遇到大量数据操作或运算 通常UI界面卡死造成交互不良 解决方法 1 使用BackgroundWorker控件 2 使用多线程委托回调 本章先介绍该控件使用方法 界面展示 若没使用该控件 点击开始 进度条会滚动但
  • linux程序前后台切换

    1 怎么样使程序在后台执行 方法有很多 这里主要列举两种 假如我们有程序pso cpp 通过编译后产生可执行文件pso 我们要使pso在linux服务器后台执行 当客户端关机后重新登入服务器后继续查看本来在终端输出的运行结果 假设操作都在当
  • Python selenium —— selenium与自动化测试成神之路

    Python selenium selenium与自动化测试成神之路 忽然想谈谈自动化的学习路径 因为发现很多人总是急于求成 不懂该如何学习 在群里总是会遇到很多人问低级问题 写了一个selenium脚本 却执行失败 跑到群里来问 大神 这