element

关于微信小程序 canvas 裁剪图片 放大 缩放功能

喜你入骨 提交于 2020-05-05 15:45:09
1 关于微信小程序裁剪 放大任务功能 第一步 先明确需要做成什么样的功能,目标需要明确。我们这边的需求就是上传一次图片进行裁剪 canvas 生成后图片直接进行商家购买<br> 第二步 裁剪的过程注意网络加载情况,可能上传一张图片有几兆这个时候需要 给他一个等待时间,防止用户重先提交,导致信息不同意,这个时候我们要做的就是加一个loging 第三步 生成后需要对图片进行处理,好了直接上代码。 创建一个文件夹,直接进行perbig文件夹 在js中我们直接进行变量的更新更业务操作 有些变量不需要 这个按照自己的情况进行获取 data:{ ratio: 750 / 750, //剪裁比例 originUrl: '', //原始图片url cropperResult: '', //变化后结果 windowWidt:'', originShow: '', cropperResultShow:'', originImgPics:'../../lib/images/shade.png', //背景图 base64: '', //base64 cartypeId:'', // 车型id carColorId:'', // 颜色ID windowWidt:'', topImg:'', ismove:false, containerHeight:0, diffX:0, diffY:0,

如何用 Python 做自动化测试【进阶必看】

孤者浪人 提交于 2020-05-05 15:35:42
一、Selenium 环境部署 1. window 环境部署 1.1 当前环境 Win10 64 位系统;Python3.6.2(官方已经更新到了 3.6.4) 官方下载地址:https://www.python.org/downloads Selenium 3.4.3;谷歌 59。 1.2 Python3 安装部署 Python 的安装接触编程语言中很简单的语言了。不需要繁琐的 JDK,也不需要 SDK。直接到官网下载,配置环境就成功了。 首先到官网下载我们需要的 Python3 版本: 点进去直接下载: 1.3 配置环境变量 安装好之后,我们就可以在文件夹看到我们下载好的 Python 文件了。 路径为: D:\python3.6.2。 现在我们去配置环境变量吧。 回到桌面,同时按下 WIN+R 键,打开 “运行” 对话框,输入 sysdm.cpl,单击 “确定” 按钮: 选择 “高级” 选项卡: 编辑当前路径: 到这里,我们配置环境就已经完成了,但是还是需要验证我们是否成功安装的。按 WIN+R,打开 “运行” 对话框,我们输入 cmd: 输入 python: 显示版本信息就证明已经部署成功了,接下来我们就可以开始学习 python 了。 1.4 安装 Selenium 现在我们就可以直接安装 Selenium 了,重新打开 cmd 窗口,输入:pip 查看是否存在 pip

爬虫学习笔记之为什么要设置超时时间,怎么设置(使用selenium)

删除回忆录丶 提交于 2020-05-05 14:07:34
  一个程序没有设置超时时间,就可以说是一段有缺陷的代码。    读取超时指的就是客户端等待服务器发送请求的时间。(特定地,它指的是客户端要等待服务器发送字节之间的时间。在 99.9% 的情况下这指的是服务器发送第一个字节之前的时间)。    简单的说,连接超时就是发起请求连接到连接建立之间的最大时长,读取超时就是连接成功开始到服务器返回响应之间等待的最大时长。 ***************************************************************************************************************************************************   页面元素等待处理。 显性等待: EC.presence_of_element_located((By.ID,"acdid")) util.browser.find_element_by_id("acdid").click() 强制等待: 可以用sleep(3),但是不是最好的方法 隐性等待:# 隐性等待,最长等30秒 driver.implicitly_wait( 30 ) # 隐性等待和显性等待可以同时用,但要注意:等待的最长时间取两者之中的大者 ****************************************

基于VueDraggable和Element-ui的图片拖拽改变顺序的组件

孤人 提交于 2020-05-05 12:52:35
我们公司管理后台项目是使用Element-ui组件,这次需求产品要求上传的图片组允许拖拽排序,我就想用vue-draggable插件了,但是相信Element-ui的el-upload组件封装的很好,我这种菜鸟级别的前端哪里敢动,所以我就想着上传依然用el-upload,但是把上传组件的展示图片隐藏,自己根据组件的上传之后拿到的url链接自己形成图片数组,然后展示层由我们自己来写UI和vue-draggable的拖拽,话不多说,上代码,直接莽! emmm...先来两张效果图吧 < template > < div class ="com-image-drag" > < div class ="button-list" > < el-button @click ="openDrag" v-if ="!drag_open" :disabled ="banner_list.length <= 1" type ="text" size ="small" class ="operation-success" ></ el-button > < el-button @click ="save" v-if ="drag_open" type ="text" size ="small" class ="operation-success" ></ el-button > < el-button

selenium 设置等待时间

时间秒杀一切 提交于 2020-05-05 12:17:08
有些网站打开地址或者进行操作后,页面需要加载几秒钟,或者等待某一元素加载完成后再继续下一步操作,这里就需要进行设置等待时间 导入time模块,time模块是python自带的,无需下载 一、设置等待时间有三种方法: 1、强制等待 time.sleep(time) # 强制等待3秒后,进行下一步操作,也可以是小数,单位为秒 缺点:不能准确把握需要等待的时间(有时候操作未完成,等待就结束了,导致报错;有时候操作已经完成了,但时间还没到,浪费时间),如果再用例中大量使用,会浪费不必要的等待时间,影响用例的执行效率。 优点:使用简单,可以在调试时使用。 2、隐式等待 driver. implicitly_wait(X),在X时间内,页面加载完成,进行下一步操作。 缺点:使用隐式等待,程序会一直等待页面加载完成,才会执行下一步操作 (有时候页面想要的元素早已加载完成了,但是页面上个别元素还没有加载完成,仍要等待页面全部完成才能执行下一步,使用 也不是很灵活) 优点:隐式等待对整个driver的周期都起作用,所以只要设置一次即可 3、显示等待 from selenium.webdriver.support.wait import WebDriverWait WebDriverWait(driver, 超时时间, 调用频率, 要忽略的异常).until(要执行的方法, 超时时返回的错误信息)

vue实现element-ui对话框可拖拽功能

穿精又带淫゛_ 提交于 2020-05-05 12:03:10
element-ui对话框可拖拽及边界处理 应业务需求,需要实现对话框可拖拽问题,应element-ui没有提供官方支持,于是便参考大神的文章,得出了适合业务需要的解决方案。很多大神给出的代码是没有解决边界问题的,但是不解决边界问题存在一个bug,拖到不可视区域后边再也拖不回来了,不信你们可以试试。 在实现的功能的情况下,封装成了js文件,然后再main.js中引入后可全局使用。 还是上代码吧 功能实现代码directives.js代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 import Vue from 'vue' ; // v-dialogDrag: 弹窗拖拽属性 Vue.directive( 'dialogDrag' , { bind(el, binding, vnode, oldVnode) { const dialogHeaderEl = el

jQuery hasAttr检查元素是否有属性[重复]

这一生的挚爱 提交于 2020-05-05 11:29:26
问题: Possible Duplicate: 可能重复: Check existence of an attribute with JQuery 使用JQuery检查属性是否存在 How do you check if there is an attribute on an element in jQuery? 你如何检查jQuery中的元素是否有属性? Similar to hasClass , but with attr ? 与 hasClass 类似,但是 attr ? For example, 例如, if ($(this).hasAttr("name")) { // ... } 解决方案: 参考一: https://stackoom.com/question/5WtI/jQuery-hasAttr检查元素是否有属性-重复 参考二: https://oldbug.net/q/5WtI/jQuery-hasAttr-checking-to-see-if-there-is-an-attribute-on-an-element-duplicate 来源: oschina 链接: https://my.oschina.net/stackoom/blog/4266867

Python 抓取动态网页表格信息

假如想象 提交于 2020-05-05 10:09:00
PS:不管你是零基础还是有基础都可以获取到自己相对应的学习礼包!包括Python软件工具和2020最新入门到实战教程。加群695185429即可免费获取。 五一假期,研究了下Python抓取动态网页信息的相关操作,结合封面的参考书、网上教程编写出可以满足需求的代码。由于初涉python,过程中曲折很多,为了避免以后遇到问题找不到相关的信息创建本文。 准备工具: Python 3.8 Google Chrome浏览器 Googledriver 测试网站: 1.集思录(https://www.jisilu.cn/data/cbnew/#cb) 测试前准备: 1.配置python运行的环境变量,参照链接(https://www.runoob.com/python3/python3-install.html) *本次测试主要采取两种方式抓取动态网页数据,一是requests及json分析的方式;一是selenium的方式。requests方式速度快,但有一些元素的链接信息抓取不到;selenium方式通过模拟打开浏览器的方式进行数据的抓取,由于要打开浏览器因此速度相对较慢,但是可抓取的信息比较全面。 主要抓取的内容如下:(网站中的一些可转债数据) requests 方式抓取网站信息: Python需要安装的相关脚本:Requests 安装方式:管理员身份运行cmd;输入 pip

Java中常用七个阻塞队列的总结

北城以北 提交于 2020-05-05 10:08:19
Java队列总结 通过前面文章的学习,我们对Java中常用队列做了介绍。本文,咱们来对队列做个总结吧。 首先,我们介绍了现实生活中的实际场景(排队买票等),来告诉我们为什么需要使用队列。 队列是一种先进先出(FIFO)的抽象数据结构,在Java中,队列使用了两种数据类型来实现的,分别是:数组和链表这两种数据结构。 本文主要内容:回顾Java中常用的七个阻塞队列进行总结及阻塞队列中四组AP并进行总结。 本文来源:本文是由凯哥Java(kaigejava)原创发布。 接着,我们介绍了队列的分类,可以分为两类,即阻塞队列和非阻塞队列。 常用的三个非阻塞队列:LinkedList、PriorityQueue和ConcurrentLinkedQueue. (PS:凯哥没有做介绍,在以后的文章中,凯哥将对ConcurrentLinkedQueue进行介绍) 然后我们介绍Java中常用的七个阻塞队列。他们之间类图关系: 我们可以看到,队列是Collection的子类。也即和arrayList类似的。 接着我们就对七个阻塞队列做了详细的介绍。 阻塞队列的七个子类 ArrayBlockingQueue(下文简称:ABQueue)、LinkedBlockingQueue(下文简称:LBQueue)、PriorityBlockingQueue(下文简称:PBQueue)、DelayQueue(下文简称

JS数组常用方法---2、push方法使用及原理

不羁岁月 提交于 2020-05-05 07:47:08
JS数组常用方法---2、push方法使用及原理 一、总结 一句话总结: push方法的作用是向数组末尾添加一个或多个元素,参数是要push到数组的元素,返回值是数组新的长度,push方法会影响原数组 push方法的原理就是动态的获取传递给push方法的参数,然后依次循环遍历的加到原数组后面 push方法 作用:向数组末尾添加一个或多个元素 参数:element1, ..., elementN 返回值:数组新的长度(length) 是否影响原数组:肯定影响 // 简单实现push方法 Array.prototype.push1= function () { // 通过遍历把参数加到原数组里面去 for (let i in arguments){ this [ this .length]= arguments[i]; // 如果this是对象的话,我们就手动的对这个对象的length属性加1 if (Object.prototype.toString.call( this ).slice(8,-1)=='Object' ){ this .length++ ; } } return this .length; }; 1、调用数组方法另外的形式(除了 arr.方法名 外)? 1、Array.prototype.push.apply(vegetables, moreVegs); 2、[]