随笔分类 -  从零开始Python+Selenium

摘要:在工作中除了标准的Chrome浏览器或者firefox浏览器外,也会遇到非标准的浏览器,比如自定义的浏览器,或者360等浏览器。 在这类浏览器中可以通过自定义的方式启动,方式如下 from selenium import webdriver from selenium.webdriver.chrom 阅读全文
posted @ 2021-05-08 15:04 RonyJay 阅读(442) 评论(0) 推荐(0)
摘要:上一篇中说了如何新建一个Project,接下来,我们讲继续详细的讨论如何去设置相关的配置。 1.源码管理 前置条件:有安装Git插件 a,进入配置页面 b,源码管理选择Git,稍等一下会自动连接上 2.构建触发器 a, Build Periodically,周期性进行构建,某一个时刻自动去构建。 定 阅读全文
posted @ 2020-06-28 10:59 RonyJay 阅读(290) 评论(0) 推荐(0)
摘要:1.进入Jenkins主页面后,点击左上角的 新建Item 2.输入项目名称 - 点击 Freestyle project - 点击 确定 3. 进行相关配置 其中包括 General,源码管理,构建触发器,构建环境,构建,构建后操作 General 一般的描述 源码管理 包括目前比较常用的SVN, 阅读全文
posted @ 2020-06-28 09:32 RonyJay 阅读(269) 评论(0) 推荐(0)
摘要:借着这个小项目的机会,顺便学一下持续继承,这个听起来高大上的东西。 很多时候我们想实现的就是一旦程序猿提交了代码,就能自动部署,测试就能自动运行,然后自动发布,实现这种流水线的模式,然后减少人工的参与。 我简单理解的持续集成和持续交付就是这个意思。 Jenkins就是一个可以起到串联各个步骤的工具。 阅读全文
posted @ 2020-06-18 15:56 RonyJay 阅读(218) 评论(0) 推荐(0)
摘要:在脚本运行中,我们可能需要知道脚本运行到哪个地方了,运行了些什么东西,输出的信息哪些比较严重,如果直接在代码里面print输出很不友好,也不适合进行筛选,所以引进了日志 在日志中,可以通过日志的级别来筛选显示我们需要的信息 日志级别 数值 CRITICAL 50 ERROR 40 WARNING 3 阅读全文
posted @ 2020-06-04 11:17 RonyJay 阅读(365) 评论(0) 推荐(0)
摘要:前面一个基础的小框架已经形成,但是依然有很多值得优化的地方,比如在Browser_engine.py中,将browser的类型硬编码写了进去,这在代码里面其实是很不好的一种方式 比如我们需要将Chrome改成Firefox的时候,就需要去改写代码。这篇我们将这些需要改变的值写进配置文件中,然后代码去 阅读全文
posted @ 2020-06-01 15:53 RonyJay 阅读(578) 评论(0) 推荐(0)
摘要:新建文件夹test_report,在网上下载HTMLTestRunner.py文件放在Utils包中 注意,如果你使用的是python 3.x的话,HTMLTestRunner.py文件也需要用python 3.x的 接下来,我们改造TestRunner文件 # coding=utf-8 impor 阅读全文
posted @ 2020-06-01 11:30 RonyJay 阅读(206) 评论(0) 推荐(0)
摘要:在一个项目中往往不可能只有一个用例,也不可能只有一个页面,所有这里就涉及到用例的组织方式 unittest最核心的四部分是:TestCase,TestSuite,TestFixture,TestRunner 1.TestCase,就是外面常说的用例,记住需要以test开头 2.TestSuite,就 阅读全文
posted @ 2020-05-29 15:52 RonyJay 阅读(261) 评论(0) 推荐(0)
摘要:文章太长不看版: setUp(): 每个测试case运行之前运行 tearDown(): 每个测试case运行完之后执行 setUpClass(): 必须使用 @classmethod装饰器, 所有case运行之前只运行一次 tearDownClass(): 必须使用 @classmethod装饰器 阅读全文
posted @ 2020-05-29 14:48 RonyJay 阅读(1055) 评论(0) 推荐(0)
摘要:前面都做了那么多铺垫,终于进入正题了,前面的文章把基类写了,流程类写了,本篇便进入断言阶段 判断预期结果和实际结果是否一致 在TestSuites包下,建立test_baidu.py文件 from Base import * from PageObjects import * from Flow i 阅读全文
posted @ 2020-05-28 11:42 RonyJay 阅读(301) 评论(0) 推荐(0)
摘要:上篇说到,我们的测试步骤 1,打开 百度 2,搜索关键字selenium 3,点击 知道 4,获取百度知道页第一条链接的href属性 5,对比该属性和预期结果是否一样 其实可以将这5个步骤分成三类 1,打开页面 2,进行测试 3,对比实际结果和预期结果 流程类,就是将测试步骤打包在一起,比如这个用例 阅读全文
posted @ 2020-05-28 11:26 RonyJay 阅读(320) 评论(0) 推荐(0)
摘要:今天开始的文章就开始涉及到具体的业务逻辑流程了 我们要测试的一个用例步骤为 1,打开 百度 2,搜索关键字selenium 3,点击 知道 4,获取百度知道页第一条链接的href属性 5,对比该属性和预期结果是否一样 页面类主要是封装在该页面或者该流程上的一些基本方法,以达到复用代码便于维护的目的 阅读全文
posted @ 2020-05-28 10:31 RonyJay 阅读(462) 评论(0) 推荐(0)
摘要:在Base包中新建一个BasePage.py 这个文件中,主要封装一些基础的操作,比如说打开url,关闭浏览器,点击,输入,获取元素等与业务逻辑无关的最底层的操作 这个类,可以根据不同的项目需求进行拓展,本文只是举了一个简单的例子 class BasePage(object): def __init 阅读全文
posted @ 2020-05-27 14:37 RonyJay 阅读(828) 评论(0) 推荐(0)
摘要:结构目录如上: Base包:存放一些基类,这次我们要封装的浏览器引擎类放在这个包里面 TestSuites:存放测试用例,新建Test.py来测试这个引擎类 Utils:存放工具类,chrome和firefox的驱动放在这里面 Browser_engine.py import os from sel 阅读全文
posted @ 2020-05-25 16:48 RonyJay 阅读(490) 评论(0) 推荐(0)
摘要:前面一直在说,我理解的UI自动化就是 启动 - 定位 - 操作 - 断言 前面所有的脚本,几乎都是在一段代码中,将这四个步骤全部揉在了一起,一两个case倒是没有什么大问题,要是让你维护100个,1000个case呢。 如果某一天一个UI的元素定位发生了变化,其中涉及到500条case,那岂不是要改 阅读全文
posted @ 2020-05-25 11:22 RonyJay 阅读(1626) 评论(0) 推荐(0)
摘要:听大佬讲过自动化测试的三个层次 1.手工测试用例到自动化测试脚本的转化 2.设计/维护自动化测试框架 3.流程的自动化方案设计,比如说一键打包,自动部署,自动测试,生成报告等 前面的例子,基本都是讲解第一阶段的内容,从这篇开始,将开始包含一些selenium的二次封装的东西,以及框架的设计方案,工程 阅读全文
posted @ 2020-05-25 09:59 RonyJay 阅读(359) 评论(0) 推荐(0)
摘要:前面有说过在测试过程中可以截图,截图后,我们可以通过对比截图的相似度,来进行断言 本文介绍两个可以对比截图相似度的方法 方法一: from PIL import Image import math import operator from functools import reduce def im 阅读全文
posted @ 2020-05-22 20:44 RonyJay 阅读(1084) 评论(0) 推荐(0)
摘要:在测试过程中,有可能会遇到访问网站需要授权的问题,只有进了这个门,才能谈继续操作的问题 这个问题的关键代码在于 driver.get("http://username:password@xxxxx.com") 将网站授权的用户名密码按上面的格式放置,就可以正常访问网站啦 阅读全文
posted @ 2020-05-22 15:55 RonyJay 阅读(975) 评论(1) 推荐(0)
摘要:在有的测试网站中,图片过多,很影响加载速度,所以可以不影响业务流程的情况下,屏蔽掉网站上的图片,进行测试 思路就是启动一个自定义的浏览器,自行配置相关设置就可以了 from selenium import webdriver from selenium.webdriver.chrome.option 阅读全文
posted @ 2020-05-22 14:47 RonyJay 阅读(1786) 评论(0) 推荐(0)
摘要:在UI自动化测试中,往往需要页面加载完成才能进行下一步操作,而一般情况下脚本的运行速度又很快。所以经常会出现脚本运行过快,页面还没加载出来,就进行操作,就会报错。 所以合适的等待,在自动化测试中有比较重要的作用。 本文主要介绍,自动化工程中,比较常用的三种等待方式 1.强制等待 time.sleep 阅读全文
posted @ 2020-05-21 13:45 RonyJay 阅读(724) 评论(0) 推荐(0)