自动化测试
王大傻0928
这个作者很懒,什么都没留下…
展开
-
python selenium 显示等待 + EC
判断一个元素存在于页面中,存在则返回元素本身,不存在则报错。参数locator:定位器是一个数据类型元组(“元素定位方式”, “方式对应的值”)expected_conditions是selenium的一个模块,主要用于对页面元素的加载进行判断,包括元素是否存在,可点击等等。原创 2024-09-13 17:14:02 · 463 阅读 · 0 评论 -
expected_conditions(EC) 判断元素的操作
面试的时候经常会被问到,如何判断一个元素是否存在,如何判断alert弹窗出来了,如何判断动态的元素等等一系列的判断,在selenium的expected_conditions模块收集了一系列的场景判断方法。expected_conditions是selenium的一个模块,主要用于对页面元素的加载进行判断,包括元素是否存在,可点击等等。一般情况下,我们在使用expected_conditions模块时都会对其进行重命名,通过as关键字对其命名为EC。EC.方法(参数)(driver)EC.方法(参数).原创 2024-09-13 16:59:56 · 489 阅读 · 0 评论 -
Python 实现行为驱动开发 (BDD) 自动化测试详解
在业界中Cucumber是非常流行的适合BDD的框架,但是Cucumber 本身并不直接支持 Python,Python社区有一个类似的工具叫做 Behave,它是一个专为 Python 设计的 BDD 框架,功能和使用方式与 Cucumber 非常相似。它允许你用自然语言编写测试用例。1、Web 应用自动化测试:使用 Selenium 等工具,结合 Behave 实现 Web 应用的端到端自动化测试。2、 App应用自动化测试:结合 Appium,使用 Behave 编写和运行移动端应用自动化测试。原创 2024-08-10 17:34:26 · 429 阅读 · 0 评论 -
web UI自动化测试 浏览器模式设置
做selenium UI自动化测试时,每次都需要启动浏览器、用例运行结束后再关闭浏览器,浏览器启动相当地耗费时间,在本机运行用例的话还得放开双手,可以使用chrome的。,让浏览器在后台运行,不需要加载样式和渲染,也可以让自动化测试更稳定。自动化之浏览器模式设置。原创 2024-07-25 17:33:12 · 400 阅读 · 0 评论 -
selenium 之 css定位
格式:[attribute=value] 如:[type=‘password’] (选择所有type属性为password的值)css定位方式:1. id选择器 2. class选择器 3. 元素选择器 4. 属性选择器 5. 层级选择器。格式:element>element 如:p>input(返还所有p元素下所有的input元素)格式:.class属性值 如:.telA(选择class属性值为telA的所有元素)格式:#id属性值 如:#userA(选择id属性值为userA的所有元素)原创 2024-07-14 17:35:55 · 466 阅读 · 0 评论 -
python + selenium 实现浏览器的基本操作
python调用webdriver框架的API,对浏览器做一些常规的操作,如打开、窗口最大化、前进、后退、刷新、截屏、退出操作等。6、截屏:get_screenshot_as_file(保存路径)1、实例对象,打开浏览器:webdriver.Chrome()7、窗口最大化:maximize_window()8、退出:close(),quit()2、打开网页:get(url)3、刷新:refresh()4、前进:forward()5、后退:back()原创 2024-06-06 11:11:05 · 459 阅读 · 0 评论 -
做自动化接口测试时python处理cookies技巧(接口关联)
做接口测试时,遇到需要登录后才能继续操作时,需要做接口关联。s = requests.session()原创 2024-01-11 16:01:38 · 907 阅读 · 0 评论 -
unittest Module中常用的断言方法
assertNotIn(item, list):判断item不在list中。assertIn(item, list):判断item在list中;assertNotEqual(a, b):判断a!assertEqual(a, b):判断a == b;assertFalse(x):判断x为False;assertTrue(x):判断x为True;原创 2024-01-12 16:07:28 · 402 阅读 · 0 评论 -
python 利用多线程执行selenium(自动化)测试
在实际应用中,可能会遇到项目要求既要在Chrome浏览器中测试,又需要在Firefox浏览器中进行测试,那么此时就能体现出多线程测试的优势。多线程并行地运行自动化测试,提高了效率。示例:在本地利用chrome浏览器和firefox浏览器对同一脚本进行并发操作。base_unit.py : UnitTest管理并执行测试脚本。python 利用多线程执行selenium测试。basic_unit.py : 测试用例。test_run.py : 多线程测试类。...原创 2024-01-11 16:02:23 · 1245 阅读 · 0 评论 -
用Python 封装 发送HTTP请求 的类 +使用mysql数据库作为测试用例及测试数据的存储设备
用Python发送HTTP请求:测试数据存储在数据库中,所以是从数据库接口测试用例表中获取指定数据,然后使用requests模块发送HTTP请求,并获取返回包数据。准备工作:数据库使用MySQL初始化测试用例表及其数据。新建数据库接口用例表,并初始化测试数据。用python操作HTTP请求的代码:该代码是一个封装的、用python发送HTTP请求的类。这里使用的接口是从UomgAPI获取的免费接口。...原创 2022-07-14 13:29:51 · 618 阅读 · 0 评论 -
python使用 pytesseract + tesseract-ocr 进行验证码识别
使用 pytesseract + tesseract-ocr 进行验证码识别,需要安装的第三方库:pytesseract 、tesseract-ocr,在使用pytesseract 之前,必须安装tesseract-ocr,因为 pytesseract 依赖于tesseract-ocr,否则无法使用。1、tesseract-ocr下载安装与配置:tesseract-ocr下载安装与配置2、pytesseract 安装:pip install pytesseract3、修改pytesseract.py原创 2022-07-09 16:13:10 · 1239 阅读 · 0 评论 -
selenium分布式测试
selenium分布式测试原创 2022-06-08 17:22:54 · 414 阅读 · 0 评论 -
行为驱动测试 python + behave
行为驱动,Behave-Driven Development,简称BDD。在行为驱动中运用结构化的自然语言描述场景测试,然后将这些结构化的自然语言转化为可执行的测试脚本或者其他形式。BDD的一种优势是,它建立了一种通用语言,而这种语言可以同时被客户和开发者拿来使用,因此建立在同一种语言知乎的沟通就会避免很多不一致的问题。BDD的环境:安装模块behave,pip install behave。BDD一些关键字的解释:(1)Feature,可简单描述此场景是什么,如登录。(2)Given,表示‘假设’原创 2024-01-13 12:31:47 · 954 阅读 · 0 评论 -
python+selenium实战搭建PO模型
设计PO模式的方法:页面对象模型(POM)是一种设计模式,用来管理维护一组web元素集的对象库。1.基础层base:封装一些最基础的selenium的原生的api方法,元素定位,框架跳转等。2.PO层:元素定位、获得元素对象,页面动作。3.测试用例层:业务逻辑,数据驱动。三者的关系:PO层继承基础层,测试用例层调用PO层。案例:非PO模式下有如下百度搜索脚本,如何把这个脚本改为PO模式实现?# coding = utf-8import unittestfrom selenium impo原创 2022-04-23 17:59:31 · 2146 阅读 · 0 评论 -
PO(page object)页面对象模式简介
什么是PO?PO是page object的缩写,中文翻译为‘页面对象模式’。它是一种设计模式,其目的是为了web UI测试创建对象库。在这种模式下,应用涉及的每一个页面应该定义为一个单独的类。类中应该包含此页面上的页面元素对象和处理这些元素对象所需要的方法等。方法的命名也有一定的规则,比如方法命名要能清楚、正确地表明此方法的作用或者行为。比如,需要定义一个方法,目的是回到应用首页,那么就可以把它命名为getHomePage(),这样通过方法的名字就可以很清楚地知道方法的具体功能。PO的优点如下:(1原创 2022-04-17 16:46:35 · 1649 阅读 · 0 评论 -
python+unittest+ddt+excel实现简单的重复性测试
在实际项目中,很多时候需要重复性测试而非一次性测试,大量的重复测试才能体现出自动化测试效率和价值。以一个小案例演示一下‘如何运用DDT框架结合excel文件类型的测试数据来实现自动化测试’,测试场景是模拟添加用户登录。项目文件结构如图所示:测试数据文件testdata.xlsx的内容如图所示:excel函数文件dataexcel.py内容如下,作用是提取测试数据并返回一个列表,而每个列表元素是一个字典对象。# coding = utf-8import xlrddef readExce原创 2022-04-14 16:46:29 · 1032 阅读 · 0 评论 -
UI自动化测试批量执行
在实际工作中,通常一个测试会包含多个测试用例,这些测试用例可能来源于多个不同的模块。此时,利用自动化测试框架来进行批量执行,就可以省时省力,从而提高测试的效率。一、创建一个项目project1;二、在项目上创建一个python package,包名为testsuite;三、在testsuite下新建文件夹testset1;四、在文件夹testset1下,添加脚本文件 case01.py和case02.py;case01.py文件的代码如下:# coding = utf-8import un原创 2022-04-12 18:39:22 · 993 阅读 · 0 评论 -
UnitTest 工作流中核心的四大组件简介
单元测试库(UnitTest)实现了我们在开发代码过程中实际值和预期值进行比较等功能,使用起来很方便。UnitTest作为一种单元测试框架,其思想来源于JUnit,跟目前市场上主流的一些测试框架有很多相似之处。UnitTest 工作流中核心的四大组件简介:(1)Test Fixture 是指在执行测试之前的准备工作,比如数据清理工作、创建临时数据库、目录,以及开启某些服务进程等。(2)Test Case 是最小的测试单元,具有独立性。主要检测输出结果是否满足期望,这些结果基于一系列特定的输入。Unit原创 2022-04-09 15:43:06 · 1730 阅读 · 0 评论 -
python + selenium 初步实现数据驱动
如果在进行自动化测试的时候将测试数据写在代码中,若测试数据有变,不利于数据的修改和维护。但可以尝试通过将测试数据放到excel文档中来实现测试数据的管理。示例:本次涉及的项目使用的12306 selenium 重构------三层架构excel文件数据如图所示:整体项目代码结构如图所示:function.py 代码如下(基础代码):# coding = utf-8'''基础常用方法'''from datetime import date,timedeltafrom selenium原创 2024-01-13 12:31:54 · 1052 阅读 · 0 评论 -
selenium 重构------三层架构
如图所示给出的是项目重构的三层架构示意图:示例:本次涉及的项目使用的12306 selenium 重构-----代码分层优化基于以上原则,将selenium,webdriver相关的配置加入functions.py基础代码文件中,便于底层调用。functions.py代码如下:# coding = utf-8# Date: 2022/3/29 16:26'''基础常用方法'''from datetime import date,timedeltafrom selenium impo原创 2022-03-29 18:06:59 · 1612 阅读 · 0 评论 -
selenium 重构-----代码分层优化
通过对上一篇文章中脚本的观察发现,上面的代码将函数和其他测试代码放在同一个文件中。随着自动化测试的深入,测试的内容和范围会逐步增加,这样的编码方式,不利于提高代码的可扩展性和可维护性。上一篇文章:对selenium中元素定位方法进行重构再封装为了更好的理解代码分层的理念,将根据同样的项目逐步进行深入挖掘和优化。如图所示为初步分层后的代码结构图。其中booking_tickets.py为测试代码文件;文件functions.py主要存放常用的基础方法等。其中,基础常用方法代码如下:# coding原创 2024-01-13 12:32:01 · 872 阅读 · 0 评论 -
对selenium中元素定位方法进行重构再封装
元素的定位方法可能会被多处代码调用,而在UI自动化测试过程中会涉及多个页面,每个页面在进行元素定位时又需要用到元素定位方法,所以对元素定位方法进行重构再封装是有必要的,也是有价值的。优化的目的主要有两点:一是可以减少代码量并且有效提高代码复用率;二是可以提高代码的可读性。代码重构可以通过定义函数来实现。毕竟函数一个很重要的作用就是提高代码的重用性。示例:以python+selenium实现12306模拟火车票的查询及预订为例,对元素定位方法进行优化python+selenium实现12306模拟原创 2022-03-28 17:24:55 · 1142 阅读 · 0 评论 -
python+selenium实现12306模拟火车票的查询及预订
python+selenium实现12306模拟火车票的查询及预订:线性代码实现流程,完整代码如下:# coding = utf-8from datetime import date, timedeltafrom selenium import webdriverfrom selenium.webdriver.common.by import Byfrom time import sleep# 以下为定义函数部分,其目的是返回今天后的第n天后的日期,格式为“2022-03-28”def原创 2024-01-14 17:14:40 · 1885 阅读 · 0 评论 -
selenium 之 web页面多窗口切换
在web测试过程中,经常会打开多个窗口,selenium无法直接对新页面元素进行定位,需要切换窗口操作。在web应用中,每一个窗口都有一个对应的唯一句柄来进行标识,如果我们切换窗口,则只需要获取新窗口的句柄,然后切换句柄即可。获取当前句柄:driver.current_window_handle获取所有句柄:driver.window_handles切换句柄:driver.switch_to.window(句柄号)或者driver.switch_to_window(句柄号)示例:以hao123网站原创 2022-03-28 15:29:56 · 2750 阅读 · 0 评论 -
使用cookie操作的形式绕过验证码,进行免登录
验证码在当今的软件中应用非常广泛,如手机App,网页网站等,很多地方在利用这种机制来规避一些安全和隐私问题。在自动化测试过程时,其中验证码的一种处理思路是通过cookie操作的形式来绕过验证码甚至是二维码等安全机制。而且这种方法和思路相对来说也是简便一些。示例:通过百度网盘的登录场景来演示cookie实现自动化登录。步骤1:通过脚本抓取初次打开百度网盘首页的cookie:from selenium import webdriverdriver = webdriver.Chrome()drive原创 2022-03-22 21:45:29 · 4055 阅读 · 5 评论 -
使用pillow库进行验证码截图
在web自动化测试过程中,常常会遇到验证码。而验证码如果要用图像识别等方式去处理,需要先对验证码元素进行截图,先对整个页面截图,再通过验证码位置裁切的方式获取验证码图片。元素截图需要安装第三方pillow库,安装命令为“pip install pillow”。示例:去哪儿网找回密码页面为例。# coding = utf-8from selenium import webdriverfrom PIL import Imaged = webdriver.Chrome()# 打开去哪儿网找回密原创 2022-03-22 19:08:01 · 1331 阅读 · 0 评论 -
selenium使用save_screenshot()进行页面截图
web自动化测试过程中页面截图相对比较简单,可以直接使用selenium自带的方法save_screenshot()。示例:对百度首页整个页面进行截图。# coding = utf-8from selenium import webdriverd = webdriver.Chrome()d.get('https://www.baidu.com/')# 对页面进行截图d.save_screenshot('baidu.png')d.quit()...原创 2022-03-22 18:21:48 · 3531 阅读 · 0 评论 -
selenium之滑块操作
滑块作为安全验证机制的一种,经常在登录或者注册时涉及。但是在自动化测试时,需要想办法用代码的方式来处理滑块。selenium中对滑块的操作基本是采用元素拖曳的方式,而这种方式需要用到selenium的Actionchains功能模块的drag_and_drop_by_offset方法。示例:以携程网的注册页面为例,URL:https://passport.ctrip.com/user/reg/home/# coding = utf-8from selenium import webdriverf原创 2022-03-18 16:44:12 · 6270 阅读 · 5 评论 -
selenium 之 cookie操作
web测试过程中,常遇到cookie测试,如查看不同浏览器中的cookie,cookie是否起作用等。在selenium中提供了读取,添加,删除等操作cookie的方法。示例:获取登录博客园前后的cookie信息。# coding = utf-8from selenium import webdriverfrom selenium.webdriver.common.by import Byd = webdriver.Chrome()d.maximize_window()d.implici原创 2022-03-18 15:55:19 · 1122 阅读 · 0 评论 -
selenium借助pywinauto工具上传附件
在运用selenium进行自动化测试的过程中,可能会遇到执行上传附件的操作。selenium本身是无法直接识别并操作windows窗口的,但是可以通过第三方工具pywinauto实现上传。pywinauto是一款界面操作的工具类库,它是python编写完成的,专门处理Windows GUI,目前仅支持Windows操作系统,其优点是可以直接用python脚本调用,前提是需要引入相应库。pywinauto官网地址为:“https://pywinauto.readthedocs.io/” 。pywinau原创 2022-03-16 18:47:44 · 2401 阅读 · 0 评论 -
selenium使用AutoIt工具上传附件
selenium上传附件运用第三方工具AutoIt来实现上传。AutoIt是免费的,运用类Basic语言设计开发的一款可以对windows界面进行自动化模拟操作的工具。目前仅支持windows操作系统,主要有以下特点:Basic语法简单易学。可以模拟键盘输入和鼠标移动。可以操作windows窗口和任务进程。可以和所有标准的window控件进行交互。脚本可以编译成单独的可执行程序,易于移植。可以创建图形化用户界面。COM组件支持。支持正则表达式。可以直接调用外部DLL库和Windows原创 2022-03-15 19:57:30 · 6833 阅读 · 1 评论 -
selenium使用send_keys方式上传附件
在运用selenium进行自动化测试的过程中,可能会遇到执行上传附件的操作。如果是input类型的标签,并且type值为“file”,那么可以直接通过send_keys的方法来绕过弹出框操作,直接将文件信息传递给“添加附件”按钮。示例:使用selenium登录163邮箱,在发送邮件中添加附件。# coding = utf-8from selenium import webdriverfrom selenium.webdriver.common.by import By# 打开谷歌浏览器d原创 2022-03-15 16:47:06 · 2426 阅读 · 0 评论 -
selenium之Frame操作
Frame标签有Frameset,Frame和iFrame三种。Frameset可以直接按照正常元素定位。Frame和iFrame的定位方法相同,需要把驱动切换到Frame内再进行操作。切换方法:1:通过frame的id属性:driver.switch_to.frame(‘id属性’)2:通过frame的name属性:driver.switch_to.frame(‘name属性’)3:通过index来定位:driver.switch_to.frame(0) 其中0表示第一个iframe示例:登原创 2022-03-14 22:40:09 · 3655 阅读 · 0 评论 -
selenium基本方法
基本方法from selenium import webdriver# 启动谷歌浏览器d = webdriver.Chrome()# 打开百度首页d.get('https://www.baidu.com/')'''1. send_keys方法: 此方法类似于模拟键盘输入''''''以在百度首页搜索框输入selenium为例'''# 搜索输入框输入字符‘selenium’d.find_element_by_id('kw').send_keys('selenium')'''2. t原创 2022-03-14 00:11:28 · 1148 阅读 · 0 评论 -
selenium判断元素的方法
selenium判断元素的方法:ele.is_displayed():判断某个元素是否显示在页面上;ele.is_selected():判断某个元素是否被选中;ele.is_enables():判断某个元素是否可以操作,如判断input、select等元素的可编辑状态,如按钮是否可以点击。...原创 2022-02-26 18:23:36 · 1853 阅读 · 0 评论 -
selenium三种等待时间之显示等待
显示等待显示等待,对指定元素进行等待的一种等待方式。通过设置最大等待时间、检查频率,对页面的元素来进行等待,一旦找到元素,则停止等待,进入后续步骤。它主要的意思就是:程序每隔x秒看一眼,如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException异常。缺点:1、使用相对比较复杂;2、和强制等待类似,每一行等待只执行一次,如果要进行多个元素的等待,则需要多次写入。优点:等待判断准确,不会浪费多余的等待时间,在用例中使用,可以提高执行效率。WebD原创 2022-02-26 18:23:12 · 5625 阅读 · 0 评论 -
selenium三种等待时间之隐式等待
隐式等待:其设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间结束,然后执行下一步操作。使用方法:implicity_wait(10),在x时间内,页面加载完成,进行下一步操作。缺点:1、使用隐式等待,程序会一直等待整个页面加载完成,才会执行下一步操作;但有时候页面想要的元素早已经加载完成了,但是因为网页上个别元素还没有加载完成,仍要等到页面全部加载完成才能执行下一步,使用也不是很灵活。2、在等待时间内页面没有加载完成,时间一到也会进入下一步操作;这种情况可能出现原创 2022-02-26 17:22:14 · 2605 阅读 · 0 评论 -
selenium三种等待时间之强制等待
等待的作用:在实际自动化实现过程中,都会添加等待来完善自动化测试的代码。自动化测试,是交由机器来执行的一种测试手段,用于提升测试效率,意味着每一次的自动化测试都需要有非常高的成功率,才可以达到提升效率的作用。在自动化测试中,其实就是通过代码来执行测试的流程,也就意味着机器自己对页面元素来进行操作,如果说因为页面加载速度过慢,导致元素无法被第一时间找到,则报错,停止本次自动化测试,通过添加等待的方法,让代码再运行时,会进行等待页面加载的操作,以便于更好的进行元素查找。我们平常用到的有三种等待方式:1、原创 2022-02-26 16:49:58 · 4845 阅读 · 0 评论 -
selenium之元素常用属性
webElement常用属性与方法定位到元素后,除了对元素进行操作,还可以获取元素的一些属性信息。常见的属性信息:1、获取元素的尺寸:ele.size2、获取元素的坐标:ele.location3、获取元素的文本内容:ele.text text是存在在一对a标签、p标签或div标签中的文本内容,如果是标签中的value值,是不能通过这种方式来获取到的。4、获取元素的属性值:ele.get_attribute(属性名) 通过传入不同的属性名来获取对应的属性值5、获取页面的url:driver.cu原创 2024-01-14 17:14:48 · 1597 阅读 · 0 评论 -
selenium下拉列表定位之 select+option 的定位
下拉列表常见的前端表现形式:select + option 和 ul + li示例:打开12306订票页面,对发车时间进行定位url : https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc步骤:1、导包:from selenium.webdriver.support.ui import Select2、定位Select元素3、定位option选项:通过调用Select类的方法来进行定位选项:select_by_value()、selec原创 2022-02-24 17:15:28 · 1882 阅读 · 0 评论