实现目的 利用python的selenium库实现批量网页打印为PDF 预备知识 selenium库的简单了解 浏览器的启动参数 re库函数了解(re.complie, re.findall) js调用浏览器窗口...代码实现 import json import re from selenium import webdriver chrome_options = webdriver.ChromeOptions(
设置 程序库 Selenium2Library 变量文件 var.py 变量 @{words} 软件测试 大数据 云计算...访问百度 open browser https://www.baidu.com firefox ${SearchWords} Set Variable 软件测试...移动鼠标 open browser https://www.baidu.com firefox ${SearchWords} Set Variable 软件测试...键盘操作 open browser https://www.baidu.com firefox ${SearchWords} Set Variable 软件测试
这个功能看名字-全局域名,应该是我们开发一个类似全局header请求头的功能,所有的接口库的接口,用例库的步骤,都可以套用某个全局域名来进行请求。...但是这里面我们附加了一个隐藏的功能-域名管理: 具体为:用户在请求后,请求成功后,那么这个域名就会偷偷存储到我们的一个域名表,当然表是去重复的。...当然这个操作上的便利,也会应用在 当用户设置 项目内全局变量-全局域名的时候。 所以我们的计划是,在前2个章节中,进行域名管理相关的实现,在之后的3个左右的章节中,进行全局域名的实现。...域名管理我们实现后,它的进化空间可是非常非常大的。比如当使用的足够多的时候,我们可以进行分类管理,各个服务的域名 分类。 也可以根据 环境分类,线上/测试/预发布等。...下节我们要实现在请求中存放用户的host
可复制:▼ 效果: 到这里,我们发现另一个之前遗漏的功能,就是这俩个Clear按钮没有实现。...,设置这个接口选用的请求头的id字段,(之前我设计是用name存放,后来意识到name是可重复的,所以改用更加准确的请求头id) 本节内容到此结束,下节课我们 对接口表中的请求头选中字段进行设计 功能实现
这个设计,同样也需要前后端共同配合实现。其中前端我们就设计成,用户通过具体项目进入全局变量设置页面的时候,带着项目所生效的变量组id,然后在所有变量组上通过可选框等体现出来。...首先我们去models.py中 对项目表增加字段: 然后运行同步命令: 在我们之前的设计中,项目的所有数据在进入全局变量页面时都已经带着了,所以我们现在直接去global_data.html 中进行实现即可...用例3:当前项目中是正常的选中了第一个变量组: 我们得首先去后台给该项目手动写一个global_datas来方便测试。...,让后台更新数据库后,它在刷新本页面 即可实现效果。...本节内容到此结束,下节课我们将进入 让全局变量生效阶段。首先就是在接口调试层的 嵌入使用。
好了我们现在刷新页面 来测试一下: 首先是我的接口库中这个接口 选中的请求头如下: 然后我去用例的步骤详情页,套用这个接口,会发现 选中了一样的请求头。 所以这里我们成功搞定。
我们可以重启服务刷新页面,测试一下: 保存了俩个请求头。 然后进入后台可以确认,的确保存成功了: 然后我们要做的是显示。 就是打开一个step详情页的时候,要显示上。...不过现在 已经这样,我们的补救措施 有几种: 写个sql,跑批,把所有这种为null的全部变成""空字串。 手动去后台处理这种脏数据,数量不多的情况下。...在js代码中 加入一个if判断,如果为null, 则转成空或不运行这个选中请求头代码。 我们简单一点,选4: if判断只有在不为null的时候才会运行。...这种文件的显著特点就是,你修改内容,项目不会自动触发重启,而你也不需要重启,运行就可以实现最新状态。...本节内容到此为止,也代表项目内全局变量-公共请求头章节结束。
这也是养成开发自测的好习惯,毕竟我们是测试出身,所以自测水平一定要很高,不然会被开发同学笑话。而且我们的程序之后可没有正式的测试阶段了。直接上线,所以最好别有严重bug。...但实际引发了后台服务异常报错: 这密密麻麻的报错信息中,我们只需要先找到我们自己写的views.py的报错代码即可,其他的不用看: 这说明 我们在进行更新数据库的时候,报错,因为id为空,根本就搜不到...按我写的之后,测试发现没有报错了,前端也没一点变化。我们再回到前端html,去修改: 测试结果: 3.变量名字过长 怎么办? 当前显示效果: 我觉得问题不大。...所以返回error【改】datas[0],要用str包起来 效果如下: 测试结果: 保存自身功能,正常 保存重名变量,提示无法保存 新增多个变量,可以新增,但是新增后保存任意的时候 都必须修改名字,否则会触发重名机制...: 5.按钮美化问题 我按照自己的油腻审美给简单美化了下 ,修改如下: 添加了一个全局样式,影响所有该页面的按钮: 效果: 大家也可以按照自己喜好 改一改,也可以融合下bootstrap,或者element-ui
我们先回顾下全局变量这里我们的进度: 我们还停留在 全局变量的前端构造之中,现在还差删除 修改 新增几个功能: 我们先给新增按钮设计个onclick函数 现在我们来思考下,这个函数要干什么...这里我们要明白一个问题,全局变量这个东西,我们其实并不区分项目,规定它必须是所属哪个项目,而是属于持有人。而持有人即项目的创建者,这样它就可以在自己的任何项目中使用自己的全局变量。...然后我们urls.py: 最后去views.py: 我们来测试一下看看: 实验成功。打完手工。 明天我们继续更新,更新删除/修改功能哦。
假期结束,回来继续学习这个全局变量吧。 山风不断,春雨绵绵,终有尽。 接口平台,全局变量,总不绝。 不过一切都要结束了,这个全局变量章节的最后时刻也要来临了。...我们剩下的就是照葫芦画瓢,把什么登陆态,多用例,异常等 都插入全局变量即可完成本章节。 本节课我们迅速搞定 登陆态接口的插入。...眼是懒汉,手是好汉,饭佬方法论 指出,遇到麻烦事情,先拆分成一件一件的小目标 来实现,心里可以获得安全感。 1....先找到 登陆态接口 调试和被调用 的俩个函数,和 普通接口调试层 我们实现的 函数。把三个函数 找出来,放一起观察。...本节课内容到此结束, 下一节我们处理 异常自动测试 / 多用例 的 全局变量替换功能。
之前一节我们迅速 复制粘贴搞定了 全局域名的: models.py,urls.py,views.py。 所以本节我们要搞定的是P_apis.html中的部分了。...首先看看我们现在的html页面的结构,全部收缩,看的直观一些: 如上图,我们开辟一块空间,用来存放全局域名,整体内容,基本和全局请求头类似,所以我们依然是复制粘贴,然后改各个标签的id和内部其他字段数据...改完后代码如下:(注意host输入框的宽度调整为了70%) {# 全局域名 #} <div id="project_host_div" style="display: none;border-radius...(' "')); host_plan.appendChild(document.createElement("br")); } 然后我们刷新页面,进行各种测试...我这边发现测试全部正常: 好,本节内容到此结束。 下节我们去把这个全局变量-域名插入到接口库/用例库 的使用中的前后端开发。
我们可以看下目前的结构,我们在下面写一个全局域名。其实整体设计和全局请求头基本一致,只是当中的标签id 数据字段 函数名需要更改。...前端如此,urls.py,和views.py还有models.py基本都是复制粘贴全局请求头的,这样不就简单了么?...然后是后台views.py中设置: 如上图,我们不管三七二十一,反正看到全局请求头加上了,那我们给全局host也加上,准没错。 然后是发现全局请求头有自己的个保存函数,我们直接无脑复制了。...如上图,下面那个就是我们准备要动手改成全局域名host的函数: 改成如下即可: # 保存项目公共域名 def save_project_host(request): project_id =...本节到此就结束了,下节我们ctrl+v html层的全局域名
冲浪.jpg NetDiscover是一款基于Vert.x、RxJava2实现的爬虫框架。我最近添加了两个模块:Selenium模块、DSL模块。 一....Selenium模块 添加这个模块的目的是为了让它能够模拟人的行为去操作浏览器,完成爬虫抓取的目的。 Selenium是一个用于Web应用程序测试的工具。...Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。...这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。...其中,Selenium WebDriver 是一个支持浏览器自动化的工具。它包括一组为不同语言提供的类库和“驱动”(drivers)可以使浏览器上的动作自动化。
本节作为全局域名的最后一节,也是代码实现的第100章。...我们本节就来实际去后台进行修改,让全局域名可以真实生效,目前我们接口库接口和用例库步骤,保存的host中,若是全局域名,前面四个字符一定是:“全局域名” 所以我们后台函数依此来进行识别,若是全局域名...平时当我们的实际测试中,用例或接口经常因为切换环境导致域名变化,所以这里就完美解决来切换环境的问题了。...首先看看我的全局域名设置: 我接口选择了: 然后我进行请求,后台输出: 看来没问题。我们再测试,当改成第二个全局域名的时候: 请求: 看来切换很成功。...然后我们去搞定用例库用例运行,也就是打开run_case.py,修改demo函数: 好了,写好后,自己可以简单测试下。这应该没什么问题。 到此,我们的全局域名就正式结束了。
让我们先回顾下现在的进度: 全局变量组的增删改查已经做完了。 然后我们想先插入到接口调试层功能里。 这其中涉及到 变量的占位 和替换。 我们做了一个大字符串的替换公共函数。...然后重启服务,开始去测试,我打开我的项目: 可以看到,依然有俩组变量,一个数字,一个字符串: 我顺便给views加个print,看看实际的请求体替换结果: 然后在接口调试层设置: 请求看结果:...我们之后攒一攒会单独找一期进行充分测试和修复各种问题。
会被判断成很大的数据: 如图,其实数据是33.333333333333 猜测这个图是根据字符串长度判断的,不过我们在viwes.py中修改一下,只保留整数位即可: 目前还有很多小伙伴反馈的其他某个缺陷,我准备在全局变量讲完后集中优化...----------------正文开始--------------- 全局变量,我们上节课,简简单单的实现了增加功能,本节先来实现个删除功能 热热身。...打开我们的全局变量的那个P_global_data.html,找到删除按钮的标签,给它加上onclick,顺便在下面写好这个js函数,函数内容很简单,直接告诉后台要删除的变量id即可,然后刷新当前页面。...然后是urls.py: 最后是views.py: 然后就是测试阶段喽: 刷新页面 ,重启服务: 删除前: 删除后: 看来成功了。 那么本节内容结束了么?很显然,才开始上主菜。...继续,urls.py: 最后是views.py: 之后是测试: 改变前: 改变后: 看来成功了。 本节内容到此为止,下一节,我们要处理一下这个前端功能的 一些缺陷。
测试一下,我请求了几次百x的host 然后看后台: 有且只有存了一个百x的域名host,看来没问题。我们继续把这句代码加入到其他地方。
我们就不能按照之前全局请求头的设计了,因为全局请求头是可以多选的,但是全局域名只能单选。 打开P_apis.html, 找到调试层的html代码。...我们来进行思考,这个选择全局域名的功能,我个人觉得放在那个自动弹出的下拉列表最好。因为它和其他全局域名 还有 其他普通域名 都是互斥的关系,也就是混在一起,任选其一。...所以存放的肯定和全局请求头一样,是这个全局域名的id,而name则用来展示和描述,诱导用户选择,但是实际保存的也就是在输入框内的 应该是id,所以上图写的看着没啥问题,但是我们看看效果: 先看域名设置中的已有域名...因为我们现在增加了全局域名,所以我们要在这俩函数的过滤中,让他们不要过滤掉全局域名: 保存: 发送: 现在刷新页面再试,发现可以正常保存了。...接下来我们照例去用例库中去这么改: 用例库的views.py中我们上节没有给传入全局域名的数据,这里补上: 然后打开P_cases.html改动: 然后进行测试,发现也可以正常选择和保存全局域名就算成功了
本节内容继续开发我们的项目内全局变量,在此之前,先让我们一起回顾下,之前我们的进度: 我们的设计是,在项目内,新增了一个全局变量的页面: 紧接着,我们求建造了对应的数据库的表,然后又去后台新建了一个demo...数据: 然后在views.py中,成功通过child_json() 绑定了页面和这套数据: 接下来我们就要来搞前端交互,创造一套可以增删改查的 全局变量的 前端页面。...增加按钮 是公共的,只有一个,所以它在循环外: 按照箭头指向的 地方 进行改动成下图: 效果如下: 暂时我们 的外观设计就像个毛坯房,不过等我们把这个功能实现了,再单独拿出一节进行页面优化即可: 本节内容到此结束...="data" style="width: 500px;height: 500px;" placeholder="输入json格式的变量套内容"> 下节课,我们开始实现真实的功能
然后再次打开: 看到这个效果,就代表实现成功了! 增加/删除/修改 功能于一身的设计看来比较不错。 好了本节就到这结束,下节课我们要让这些公共请求头实际可以添加到接口库和用例库中使用了。
领取专属 10元无门槛券
手把手带您无忧上云