07 2019 档案

摘要:前戏 在进行web自动化的时候,selenium只能找当前屏幕上的标签,如果标签在当前页面没显示下,需要拖动滚动条才能查看到这个元素,这时候就要操作浏览器的滚动条,让当前页面显示这个元素才可以操作,在我之前做web自动化的时候,也找了很多的操作浏览器的方法,有些由于浏览器或者版本的问题已经使用不了了 阅读全文
posted @ 2019-07-29 09:56 邹邹很busy。 阅读(11054) 评论(0) 推荐(0) 编辑
摘要:前戏 我们在访问一些网站的时候,如果没有登录就会跳转到登录页面,如果是登录了,才会让我们访问,那服务器是怎么知道我们有没有登录呢?这就涉及到了Cookie,大家都知道HTTP的特点,无状态。也就是浏览器发送到服务器的每个请求都是没有关系的。这时候就要给服务器设置一个Cookie,下次浏览器请求的时候 阅读全文
posted @ 2019-07-26 19:56 邹邹很busy。 阅读(221) 评论(0) 推荐(0) 编辑
摘要:前戏 在我们之前操作ORM中,你也许是启动Django项目,通过地址访问固定的函数,或者在pycharm里的python console里执行,第一种比较麻烦,而且每次都要启动项目,写路由,第二种虽然不需要写路由,但是写的东西保存不下来,只要关闭就没有了。今天来通过python脚本的形式来写,既不需 阅读全文
posted @ 2019-07-22 00:11 邹邹很busy。 阅读(286) 评论(0) 推荐(0) 编辑
摘要:获取元素的标签和元素大小 结果: 获取元素的文本内容 结果 获取页面元素的属性 结果: 获取页面的css属性值 结果: 阅读全文
posted @ 2019-07-21 10:08 邹邹很busy。 阅读(302) 评论(0) 推荐(0) 编辑
摘要:前戏 web自动化的时候,如果你只有一个显示器,这时如果启动了谷歌浏览器,占据了整个显示器,那你肯定是没办法干其他的事情了。当然,你也可以使用phantomjs无头浏览器,那浏览器的兼容性你又不能不测,如果这时候,selenium可以自动设置浏览器的大小,就不会影响你的工作。也不会阻碍自动化的进行 阅读全文
posted @ 2019-07-20 23:12 邹邹很busy。 阅读(4359) 评论(0) 推荐(0) 编辑
摘要:前戏 ORM(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 ORM的优势: ORM解决的主要问题是对象和关系的映射。它通常将一个类和一张表一一对应,类的每个实例对应表中的一条记录,类的每个属性对应表中的每个字段。 阅读全文
posted @ 2019-07-20 13:31 邹邹很busy。 阅读(455) 评论(0) 推荐(0) 编辑
摘要:获取HTML源码 获取URL地址 断言源码中的关键字 阅读全文
posted @ 2019-07-19 23:57 邹邹很busy。 阅读(856) 评论(0) 推荐(0) 编辑
摘要:前戏 在之前的文章中,我们已经知道了什么是路由。路由就是urls.py文件里urlpatterns下写的一个个路径,用户输入路径之后,Django在里面找对应的路径,然后去执行views.py里的函数。前面只是学了最简单的用法,今天来看看还有哪些用法 官方文档 基本的格式: from django. 阅读全文
posted @ 2019-07-19 21:31 邹邹很busy。 阅读(264) 评论(0) 推荐(0) 编辑
摘要:表格定位 HTML代码 页面效果 定位表格中的某个元素 目的:在被测网页中,定位显示表格的第二行第二列单元格 xpath表达式//*[@id='table']/tbody/tr[2]/td[2] python定位语句 表达式中tr[2]表示第二行,td[2]表示第二列,组合起来就是第二行第二列的单元 阅读全文
posted @ 2019-07-14 23:23 邹邹很busy。 阅读(1252) 评论(0) 推荐(0) 编辑
摘要:前戏 在我们之前写的自动化脚本中,不知道大家有没有发现,每次打开的都是一个新的浏览器(相当于新安装的)。但是有时候,我们想打开的是我们配置好的浏览器。我在之前的公司做web自动化的时候,由于我们的网站是n年前开发的(代码很low的那种),如果这时候你想上传图片,必须要在浏览器设置里给这个网站启用fl 阅读全文
posted @ 2019-07-14 22:53 邹邹很busy。 阅读(1892) 评论(1) 推荐(1) 编辑
摘要:视图 视图就是一个python函数或者类,它接受web请求并返回web响应,响应可以是一个字符串或者HTML文件,也可以是一个重定向。无论视图写在哪里,都要返回响应,所以代码写在哪里都无所谓,但是为了规范,大家通常把视图放在项目或者app目录中的views.py文件中 先来看一个简单的视图 from 阅读全文
posted @ 2019-07-14 22:36 邹邹很busy。 阅读(185) 评论(0) 推荐(0) 编辑
摘要:csrf_token 在之前我们提交post请求的时候,都是在setting.py文件里注释掉了 'django.middleware.csrf.CsrfViewMiddleware' 这一行,这是因为form表单提交数据时,Django防止恶意者进行攻击,出于安全的考虑,试想一下,你自己写的dja 阅读全文
posted @ 2019-07-14 15:27 邹邹很busy。 阅读(266) 评论(0) 推荐(0) 编辑
摘要:前戏 在进行web自动化的时候,只有一个报错信息是不行的,往往需要截图来帮助我们来快速的定位问题,试想一下,我们在一个弹框里添加一些数据,点击保存后,然后在操作元素,这时selenium报错,说找不到这个元素,如果只看错误信息,那我们可能会以为是没找到这个元素,而前面的添加数据保存是成功的。那有没有 阅读全文
posted @ 2019-07-14 00:02 邹邹很busy。 阅读(1499) 评论(0) 推荐(0) 编辑
摘要:前戏 装饰器:定义:本质是函数,(装饰其他函数)就是为其他函数添加附加功能 原则: 不能修改被装饰的函数的源代码 不能修改被装饰的函数的调用方式 实现装饰器知识储备 1.函数即'变量' 2.高阶函数 把一个函数当做实参传递给另外一个参数(在不修改被装饰函数源代码的情况下为其添加功能) 返回值中包含函 阅读全文
posted @ 2019-07-13 16:17 邹邹很busy。 阅读(421) 评论(4) 推荐(1) 编辑
摘要:前戏 在前面写的图书管理系统中,我们对模版语言应该已经不陌生了,使用{{ }}包裹起来的就是模版语言,只需要记住两种就可以了 {{ 变量名 }} 变量相关的 {% %} 逻辑相关的 变量 如果使用的变量不存在,模版系统将插入string_if_invalid选项的值,它被默认设置为“”(空字符串) 阅读全文
posted @ 2019-07-12 23:52 邹邹很busy。 阅读(899) 评论(0) 推荐(0) 编辑
摘要:前戏 在进行web自动化的时候,经常需要用到上传文件的功能,selenium可以使用send_keys()来上传文件,但是使用send_keys()上传文件有很大的局限性,只能上传input标签的,好多的标签的都上传不了,我们这里使用第三方模块pywin32来模拟上传文件 实战 创建一个win32M 阅读全文
posted @ 2019-07-11 23:53 邹邹很busy。 阅读(885) 评论(0) 推荐(0) 编辑
摘要:前戏 前面我们已经实现了出版社的增删改查,书的增删改查,书和出版社的对应关系。现在来写一下作者的增删改查和书的对应关系,那书和作者有什么关系呢?一个作者可以写多本书,一本书可以有多个作者,所以书和作者是多对多的关系,这样的话,我们就需要一张表来记录书和作者的关系,想一下sql语句是怎么创建表的 -- 阅读全文
posted @ 2019-07-09 23:22 邹邹很busy。 阅读(348) 评论(0) 推荐(0) 编辑
摘要:前戏 我们常见的弹框有三种,一种是alert弹框,一种是prompt弹框,还有一种是confirm弹框那他们有什么不同呢?不同点就是他们长的不一样,alert弹框有一段文字和一个确定按钮,如下 在来看一下prompt长什么样 confirm长这样 看完上面的三个框,大家应该能区分出什么框是哪种类型的 阅读全文
posted @ 2019-07-09 21:11 邹邹很busy。 阅读(1837) 评论(0) 推荐(0) 编辑
摘要:前戏 想一想,我们为什么要获取窗口句柄呢?有什么用呢? 来假设一下,我们打开了一个网站,点击了一个按钮,新打开了一个页面,我们在新页面操作完成之后,需要回到原来的页面继续操作,这时候你如果继续操作原来的页面会报错的。因为当前的窗口句柄不是原来的,这时候就需要用到driver.switch_to.wi 阅读全文
posted @ 2019-07-09 00:14 邹邹很busy。 阅读(2805) 评论(0) 推荐(0) 编辑
摘要:表结构设计 上篇我们实现了出版社的增删改查,出版社数据表有两个字段id和name,那图书的表结构怎么设计呢?图书也要有一个主键id,还要有一个名称title,是哪个出版社的,要有个字段press和Press表里的id对应,这样图书就需要三个字段,id,title,press 创建表 # 图书表 cl 阅读全文
posted @ 2019-07-07 00:05 邹邹很busy。 阅读(429) 评论(0) 推荐(0) 编辑
摘要:前戏 我们来完成一个图书管理系统的增删改查 表结构设计 1. 出版社 id name 2. 作者 id name 3. 书 id title 出版社_id 4. 作者_书_关系表 id 书_id 作者_id 创建表 现在有个需求,当我们访问http://127.0.0.1:8080/press_li 阅读全文
posted @ 2019-07-06 00:07 邹邹很busy。 阅读(341) 评论(0) 推荐(0) 编辑
摘要:前戏 在我们做UI自动化的时候,最不稳定的就是页面了,由于各种原因页面的元素没有加载出来,比如网速慢,服务器响应慢等等,这时候如果我们去操作页面的元素,selenium会给我们抛出一个NoSuchElementException的异常。我们可以等待页面页面加载出来或者一段时间再去操作,这样的话大大降 阅读全文
posted @ 2019-07-04 23:29 邹邹很busy。 阅读(2251) 评论(0) 推荐(0) 编辑
摘要:前戏 现在我们已经能完成接口的批量执行,添加断言,数据驱动,设置变量等等方法。但是有一天,用户反应说我们的网站访问不了了。这时候,那帮程序猿查日志的查日志,看数据库的看数据库,找到原因在发布到线上已经几个小时过去了。那我们能不能对接口做一个监控呢?如果接口有问题,给对应的程序猿发个邮件通知,这样我们 阅读全文
posted @ 2019-07-04 20:21 邹邹很busy。 阅读(1750) 评论(0) 推荐(0) 编辑
摘要:前戏 上篇文章写了一个简单的登录页面,那我们可不可以实现一个简单的登录功能呢?如果登录成功,给返回一个页面,失败给出错误的提示呢? 在之前学HTML的时候,我们知道,网页在往服务器提交数据的时候,都是在form表单里,并且要满足下面的几个条件: 1.form标签必须要有action和method属性 阅读全文
posted @ 2019-07-03 23:51 邹邹很busy。 阅读(563) 评论(0) 推荐(0) 编辑
摘要:前戏 上篇文章说了selenium里的鼠标事件,在自动化中,键盘事件也是非常重要的,比如我们需要按回车键,ctrl+c复制等等操作,都离不开键盘事件,在selenium中,提供了Keys方法来供我们操作键盘 Keys 使用键盘完成复制,剪切,粘贴的功能 常用的按键 NULL = '\ue000' C 阅读全文
posted @ 2019-07-02 00:07 邹邹很busy。 阅读(4848) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示