element

记一个Selenium自动化测试网页

蹲街弑〆低调 提交于 2020-04-30 15:54:41
今天想跟大家分享的是Selenium自动化测试网页,就是关于selenium的自动化测试一些基础的东西,如有不对的地方请多多指教。 一、安装环境 1、Python环境 安装完成后通过Windows命令提示符CMD输入“python”,查看是否安装成功 2、安装setuptools与pip setuptools是PEAK(Python enterprise Application Kit)的一个副项目,是python的distutilsde的增强工具,可以更方便创建和发布python包,特别是对其他包有依赖的情况; pip是一个安装和管理python包的工具,通过pip来安装python包将变得很简单,省去了繁琐的过程,pip的安装依赖于setuptools,安装pip之前需要先安装setuptools; 3、下载selenium包 pip install selenium 4.下载浏览器驱动 火狐和谷歌各有各的驱动 下载链接:https://www.seleniumhq.org/do... 简单示例 示例名称: test_python_org_search.py import unittest #引入 unittest 模块是基于JAVAJUnit的Python内置的模块。 该模块提供了一个框架去组织测试用例   from selenium import webdriver   

腾讯大牛教你简单的自动化测试模型(Python+Selenium)

我的梦境 提交于 2020-04-30 14:44:46
今天讲解简单的自动化测试模型,对于刚接触自动化测试的同学,由于没有编程语言的基础,是搞不懂代码里面的函数、封装、包以及其他概念,只是了解字符串、数组、元组及字典这种最基本的名词,更不懂自动化测试框架了。 这篇笔记来粗略记下学习自动化测试的几种模型。 1、线性测试   线性测试,顾名思义,就是一条路按照一条直线走到底。它的每个脚本都是独立的,都可以拿出来单独运行,来验证一个功能点,上两段小代码举个栗子: 打开百度主页: #coding:utf-8 from time import sleep # 从time中引入sleep from selenium import webdriver # 从selenium中引入webdriver driver = webdriver.Firefox() # 选择打开的浏览器 driver.maximize_window() # 浏览器窗口最大化 driver.implicitly_wait(3) # 隐式等待 driver.get(" https://www.baidu.com ") # 获取URL,打开页面 driver.quit() # 退出相关浏览器   打开百度主页,并输入查找内容: #coding:utf-8 from time import sleep # 从time中引入sleep from selenium import

基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件

烂漫一生 提交于 2020-04-30 13:42:25
目录 1. 前言 2. 关于vue-simple-uploader 3. 基于vue-simple-uploader封装全局上传组件 4. 文件上传流程概览 5. 文件分片 6. MD5的计算过程 7. 秒传及断点续传 7.1 对于前端来说 7.2 前端做分片检验:checkChunkUploadedByResponse 8. 源码及后记 8.1 关于第一个分片丢失问题 2019/8/6更新 1. 前言 之前公司要在管理系统中做一个全局上传插件,即切换各个页面的时候,上传界面还在并且上传不会受到影响,这在vue这种spa框架面前并不是什么难题。然而后端大佬说我们要实现 分片上传 、 秒传 以及 断点续传 的功能,听起来头都大了。 很久之前我写了一篇webuploader的文章,结果使用起来发现问题很多,且官方团队不再维护这个插件了, 经过多天调研及踩雷,最终决定基于 vue-simple-uploader 插件实现该功能,在项目中使用起来无痛且稳定。 如果你只是想实现基本的(非定制化的)上传功能,直接使用 vue-simple-uploader ,多读一下它的文档,不需要更多的二次封装。 如果你只是想实现全局上传插件,也可以参照一下我的实现。 如果你用到了分片上传、秒传及断点续传这些复杂的功能,恭喜你,这篇文章的重点就在于此。 本文源码在此: https://github.com

【Java】itext根据模板生成pdf(包括图片和表格)

≡放荡痞女 提交于 2020-04-30 13:03:06
1、导入需要的jar包:itext-asian-5.2.0.jar itextpdf-5.5.11.jar。 2、新建word文档,创建模板,将文件另存为pdf,并用Adobe Acrobat DC打开编辑,点击右侧【准备表单】后点击【开始】 3、在需要插入数据的空白处,右击,点击【文本域】,将文本域拖放到你想要的位置,更改域名称为你传入的变量名。 4、保存文件,将文件放到项目中。生成pdf代码如下: 1 public static void creatPdf(Map<String, Object> map,String filePath) { 2 try { 3 BaseFont bf = BaseFont.createFont("c://windows//fonts//simsun.ttc,1" , BaseFont.IDENTITY_H, 4 BaseFont.EMBEDDED); 5 FileOutputStream out = new FileOutputStream(filePath); // 输出流 6 PdfReader reader = new PdfReader(TemplateToWord. class .getResource("/com/cn/business/templates/report.pdf")); // 读取pdf模板 7

在Python中模拟do-while循环?

◇◆丶佛笑我妖孽 提交于 2020-04-30 09:23:46
问题: I need to emulate a do-while loop in a Python program. 我需要在Python程序中模拟do-while循环。 Unfortunately, the following straightforward code does not work: 不幸的是,以下简单的代码不起作用: list_of_ints = [ 1, 2, 3 ] iterator = list_of_ints.__iter__() element = None while True: if element: print element try: element = iterator.next() except StopIteration: break print "done" Instead of "1,2,3,done", it prints the following output: 而不是“1,2,3,完成”,它打印以下输出: [stdout:]1 [stdout:]2 [stdout:]3 None['Traceback (most recent call last): ', ' File "test_python.py", line 8, in <module> s = i.next() ', 'StopIteration '] What can

Dict python in loop Json gets just the last element

。_饼干妹妹 提交于 2020-04-30 06:55:06
问题 Hi, i would like to create buttons on my telegram bot, which depend by the list '["Los Angeles","New York"]'. I have problem with the python dict, when i insert it in a loop, json gets just the last element (New York). Someone can explain me why? import json import time from pprint import pprint import telepot from telepot.loop import MessageLoop bot = telepot.Bot("token") lista = ["Los Angeles","New York"] for i in lista: dict = {"text": i} print(dict) keyboard = {"keyboard": [[dict]]} def

聊一聊xilinx 7系列推荐使用的复位方式

末鹿安然 提交于 2020-04-30 01:51:32
  在一个FPGA项目中,全局网络的建立至关重要,其中包括时钟网络和复位网络,通常我们在设计的时候对时钟网络的规划格外小心,却忽视了复位网络,其实复位是需要在设计中考虑和实现的最常见也更重要的控制信号之一,它跟时钟一样也是一个覆盖全局、高扇出的信号,复位会给用户设计的性能、使用面积和功耗产生显著影响,这个复位如果处理不当也会导致意想不到的错误。那么复位信号选择同步还是异步、高电平还是低电平有效?对于这个问题,针对Xilinx 7系列FPGA,就聊一聊这个问题。Xiinx 7系列FPGA推荐使用同步高电平复位,这与我们平时用到的异步低电平复位有很大出入,至于为何如此且听细细道来。 1 什么情况下使用复位信号   很多工程师习惯于对FPGA设计进行上电复位,总担心如果不复位,触发器就处于不定状态,导致系统跑飞。事实上,每个触发器都有明确的初始值,这个初始值与是否复位无关。因此,一旦系统上电,即使没有复位,对于FDSE和FDPE,其初始值为1,对于FDRE和FDCE,其初始值为0。Block RAM和DSP48内部触发器初始值为0。   1.如果只是上电复位,那么这种复位是不需要的   对于控制路径,例如状态机,这种复位通常是必需的。相比之下,数据路径的复位通常是不需要的。因为,老的数据总会被新数据“冲走”   2. 通常,控制路径需要复位,数据路径不需要复位   从功能仿真的角度看

【Java并发】Java中的原子操作类

时光毁灭记忆、已成空白 提交于 2020-04-29 23:40:07
综述 JDK从1.5开始提供了java.util.concurrent.atomic包。 通过包中的原子操作类能够线程安全地更新一个变量。 包含4种类型的原子更新方式:基本类型、数组、引用、对象中字段更新。 atomic包中的原子操作类基本上内部都是使用Unsafe类实现的,原子更新的实质其实就是获取内存偏移地址,对地址中的变量进行更新 。 关于Unsafe类,可以参考我的这篇博文 【Java并发】Java中的Unsafe类 1.原子更新基本类型类 atomic包内包含AtomicBoolean、AtomicInteger、AtomicLong这3个类,以下以AtomicInteger进行讲解。 AtomicInteger是如何实现原子操作的? 是使用Unsafe类实现的,而Unsafe实现原子操作的原理是通过得到变量相对于对象示例的内存偏移地址,更新内存地址内的变量值。 下面是摘录的AtomicInteger的部分源码。 /** * Atomically increments by one the current value. * * @return the previous value */ public final int getAndIncrement() { return unsafe.getAndAddInt( this , valueOffset, 1 ); } /*

Python 解析构建数据大杂烩 -- csv、xml、json、excel

回眸只為那壹抹淺笑 提交于 2020-04-29 18:49:36
Python 可以通过各种库去解析我们常见的数据。其中 csv 文件以纯文本形式存储表格数据,以某字符作为分隔值,通常为逗号;xml 可拓展标记语言,很像超文本标记语言 Html ,但主要对文档和数据进行结构化处理,被用来传输数据;json 作为一种轻量级数据交换格式,比 xml 更小巧但描述能力却不差,其本质是特定格式的字符串;Microsoft Excel 是电子表格,可进行各种数据的处理、统计分析和辅助决策操作,其数据格式为 xls、xlsx。接下来主要介绍通过 Python 简单解析构建上述数据,完成数据的“珍珠翡翠白玉汤”。 Python 解析构建 csv 通过标准库中的 csv 模块,使用函数 reader()、writer() 完成 csv 数据基本读写。 1 import csv 2 3 with open ('readtest.csv', newline='') as csvfile: 4 reader = csv.reader(csvfile) 5 for row in reader: 6 print (row) 7 8 with open ('writetest.csv', 'w', newline='') as csvfile: 9 writer = csv.writer(csvfile) 10 writer.writerow(" onetest ") 11

[LeetCode] 785. Is Graph Bipartite? 是二分图么?

空扰寡人 提交于 2020-04-29 16:47:05
Given an undirected graph , return true if and only if it is bipartite. Recall that a graph is bipartite if we can split it's set of nodes into two independent subsets A and B such that every edge in the graph has one node in A and another node in B. The graph is given in the following form: graph[i] is a list of indexes j for which the edge between nodes i and j exists. Each node is an integer between 0 and graph.length - 1 . There are no self edges or parallel edges: graph[i] does not contain i , and it doesn't contain any element twice. Example 1: Input: [[1,3], [0,2], [1,3], [0,2]] Output: