element

Python+Selenium练习篇之3-利用link text/partial link text定位元素

走远了吗. 提交于 2020-07-25 12:01:14
本文介绍如何通过link text 来定位页面元素,我们打开网页,一些可以点击的链接跳转上面的文字,就是link text,用百度首页举例来看: 在上面图中,这一排上面的文字都是link text,例如我们要通过“新闻”这个文本字段来定义这个跳转链接元素。 脚本如下: # coding=utf-8 from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.implicitly_wait( 6 ) driver.get( " https://www.baidu.com " ) try : driver.find_element_by_link_text( " 新闻 " ) print ( ' test pass: element found by link text ' ) except Exception as e: print ( " Exception found " , format(e)) driver.quit() 总结:凡是看到链接元素上面有文字描述的都可以采取find_element_by_link_text()方法来进行元素定位。这里提一下前面XPath定位中的知识,通过text()这个XPath中的函数也可以达到类似link

Web自动化测试:使用js语句

不羁岁月 提交于 2020-07-25 11:24:45
在selenium中,有方法可以运行js语句,这样的话对于一些selenium中没有的操作,或者实际编写UI自动化中遇到的疑难杂症,多了另外一个解决思路!简直像是打开了新世界的大门一样。js本身是很强大的,也就是说我们在使用selenium库中的操作以及方法之外,还可以用另一门专门针对前段的编程语言来辅助我们完成UI自动化脚本,对于脚本编写应该具有很大帮助。 调用运行js语句的方法 同步请求运行js driver.execute_script(script, *args) script:要运行的js语句 *args:运行js语句时使用的一些参数 异步请求运行js driver.execute_async_script(script, *args) script:要运行的js语句 *args:运行js语句时使用的一些参数 对于同步请求和异步请求的区别: 同步请求指我们发送一个请求后,需要服务端进行返回相应结果后才能进行接下来的操作; 异步请求指我们发送一个请求后,不需要服务端返回响应结果,直接进行接下来的操作(例如AJAX)。 示例演示: 对于js的功能,比较常用的就是改变元素的属性值,经常用于一些隐藏的标签需要操作时,将元素属性改为可见。当然还有其它所了解的一些用法,例如:调整滚动条位置、高亮现实指定元素等,下面进入实际网页演示下。 整滚动条位置: document

unittest单元测试框架入门及应用

≡放荡痞女 提交于 2020-07-25 06:04:47
一、简介   unittest是Python单元测试框架。unittest它支持自动化测试,在测试中使用setup(初始化)和shutdown(关闭销毁)操作,组织测试 用例为套件(批量运行),以及把测试和报告独立开来。   测试脚手架(test fixture):为了开展一项或多项测试所需要进行的准备工作,以及所有相关的清理操作。   测试用例(test case):一个测试用例是一个独立的测试单元。检查输入特定的数据时的响应。 unittest 提供一个基类: TestCase ,用于新建测试用例。   测试套件(test suite):一系列的测试用例。用于归档需要一起执行的测试用例。   测试运行器(test runner):一个用于执行和输出测试结果的组件    综上,整个流程就是首先要写好TestCase,然后由TestLoader加载TestCase到TestSuite,然后由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中,整个过程集成在unittest.main模块中。   官方文档: https://docs.python.org/zh-cn/3.7/library/unittest.html 二、unittest类的属性    unittest.TestCase :TestCase类

Element Form表单实践(上)

别来无恙 提交于 2020-07-25 03:46:13
作者:小土豆biubiubiu 博客园: https://www.cnblogs.com/HouJiao/ 掘金: https://juejin.im/user/58c61b4361ff4b005d9e894d 微信公众号:土豆妈的碎碎念(扫码关注,一起吸猫,一起听故事,一起学习前端技术) 码字不易,点赞鼓励哟~ 前言 本篇文章主要是实践一下 Element 中的 Form 表单组件。 本篇内容较为简单,基本上是参照着文档将表单部分内容实践了一下,后续会持续更新表单的一些常用功能。 同时下一篇文章 Element Form表单实践(下) 将会分享项目开发中的一个表单实践,记录在这个过程中遇到的一些问题。 项目环境 为了简单快速,我使用引入 cdn 静态资源的方式搭建项目的开发环境。 <!-- index.html --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Element Form表单实践</title> <!-- vue: 开发环境版本,包含了有帮助的命令行警告 --> <script src="https://cdn.jsdelivr

leetcode -- 二分查找

只愿长相守 提交于 2020-07-25 00:01:00
之前在数据结构搜索那章说过,折半(二分)一般适用于有序列表的查找,但是在写的时候需要注意算法的细节。我在leetcode上总共写了八道应用了二分算法的题目,从中总结一下写二分算法需要注意什么样的细节 目录 一般二分查找 注意查找位置 半有序 总结 一般二分查找 leetcode,第704题, binary search , Given a sorted (in ascending order) integer array nums of n elements and a target value, write a function to search target in nums. If target exists, then return its index, otherwise return -1. Example 1: Input: nums = [-1,0,3,5,9,12], target = 9 Output: 4 Explanation: 9 exists in nums and its index is 4 这道题就是最简单的二分查找算法,我当时的解法也是二分法, public int search(int[] nums, int target) { int start = 0, end = nums.length - 1; while(start <= end)

5G学习(一)

谁说我不能喝 提交于 2020-07-24 16:45:37
5G基本框架 gNB :向UE提供NR用户面和控制面协议终端的节点,并且经由NG接口连接到5GC ng-eNB : 向UE提供E-UTRA用户面和控制面协议终端的节点,并且经由NG接口连接到5GC 红色虚线中为核心网,UPF是用户面,除此之外都是控制面。 5G将控制面和用户面进行分离。 5G RAN架构考虑采用中央单元(CU)和分布单元(DU)独立部署的方式,以更好地满足各场景和应用的需求。 CU和DU的切分是根据不同协议层实时性的要求来进行的。在这样的原则下,把原先BBU中的物理底层下沉到AAU中处理,对实时性要求高的物理高层,MAC,RLC层放在DU中处理,而把对实时性要求不高的PDCP和RRC层放到CU中处理。 5G物理层规范 无线帧结构 请移步这里详细学习 slot概念在5G上的强化 在4G LTE中也有slot的概念,一个subframe (1ms)中 2个slot,每个slot 0.5ms,但是slot这个概念在LTE中体现的不强。这个slot的除非支持Slot base的跳频,基本上没啥用,整个LTE系统是工作在sub frame的时序上的。调度器和L1都是以subframe为周期运行。4G在这方面很是死板,5G则大大不同,5G要面对的不是简单的一个高速接入网,而是不同的应用场景。那么体现不同应用场景具体就落实在slot这个概念上了

通过数据属性选择元素

一世执手 提交于 2020-07-24 13:46:46
问题: Is there an easy and straight-forward method to select elements based on their data attribute? 是否有一种简单而直接的方法来根据其 data 属性选择元素? For example, select all anchors that has data attribute named customerID which has value of 22 . 例如,选择所有具有名为 customerID 数据属性,其值为 22 锚。 I am kind of hesitant to use rel or other attributes to store such information, but I find it much harder to select an element based on what data is stored in it. 我有点犹豫使用 rel 或其他属性来存储此类信息,但是我发现很难根据其中存储的数据来选择元素。 解决方案: 参考一: https://stackoom.com/question/ARAx/通过数据属性选择元素 参考二: https://oldbug.net/q/ARAx/Selecting-element-by-data-attribute

27. Remove Element

别说谁变了你拦得住时间么 提交于 2020-07-24 13:05:31
27. Remove Element Given an array nums and a value val , remove all instances of that value in-place and return the new length. Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory. The order of elements can be changed. It doesn't matter what you leave beyond the new length. Example 1: Given nums = [0,1,2,2,3,0,4,2] , val = 2 , Your function should return length= 5 , with the first five elements of nums containing 0, 1, 3, 0 and 4. Note that the order of those five elements can be arbitrary. It doesn't matter what values

Java集合多线程安全

二次信任 提交于 2020-07-24 08:30:15
线程安全与不安全集合 线程不安全集合: ArrayList LinkedList HashMap HashSet TreeMap TreeSet StringBulider 线程安全集合: Vector HashTable Properties 集合线程安全与解决方案 ArrayList线程安全问题 package com.raicho.mianshi.mycollection; import java.util.ArrayList; import java.util.List; import java.util.UUID; /** * @author: Raicho * @Description: * @program: mianshi * @create: 2020-07-17 15:32 **/ public class ArrayListConcurrentDemo { public static void main(String[] args) { List<String> list = new ArrayList<>(); for (int i = 0; i < 30; ++i) { new Thread(() -> { list.add(UUID.randomUUID().randomUUID().toString().substring(0, 4)); System

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

可紊 提交于 2020-07-24 07:42:38
目录 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