element

Python+Selenium练习篇之2-利用ID定位元素

人盡茶涼 提交于 2021-01-12 07:01:17
在前面一篇文章,我们介绍了如何摘取页面字段,通过正则进行匹配符合要求的字段。如果感觉有点困难,不能立马理解,没有关系。把字符串摘取放到第一篇,是因为自动化测试脚本,经常要利用字符串操作,字符串切割,查找,匹配等手段,得到新的字符串或字符串数组,然后根据新得到的字符串进行判断用例是否通过。 本篇介绍如何通过元素节点信息ID来定位该元素,使用id来定位元素虽然效率要高于XPath,但是实际测试测项目,能直接通过id定位的元素还是比较少,以下来举例百度首页搜索输入框的id定位。 脚本如下: # 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_id("kw") print ('test pass: ID found') except Exception as e: print ("Exception found", format(e)) driver.quit() 这里,我们通过try except语句块来进行测试断言,这个在实际自动化测试脚本开发中,经常要用到处理异常

Python+Selenium练习篇之3-利用tag name定位元素

╄→гoц情女王★ 提交于 2021-01-12 06:56:23
前一篇文章介绍了如何通过元素的id值来定位web元素,本文介绍如何通过tag name来定位元素。个人认为,通过tag name来定位还是有很大缺陷,定位不够精确。主要是tag name有很多重复的,造成了选择tag name来定位页面元素不准确,所以使用这个方法定位web元素的机会很少。 什么是tag name? 还是以百度首页搜索输入框,在火狐浏览器,右键,通过firepath,检查元素,看下图: 上面图片中红色圈选区域的标签名称都是tag name;实际上我们目标元素是输入框,应该是input这个tag name,在图中蓝色高亮区域。但是如果只是通过input这个tag name来定位,发现上面有很多input的选项。所以我们扩大节点的参照选择,我们选择上面这个form来作为我们tag name。 看看如何写定位form这个元素的脚本: # 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_tag_name("form") print ('test pass

杭电多校第七场 1010 Sequence(除法分块+矩阵快速幂)

空扰寡人 提交于 2021-01-12 04:23:22
Sequence Problem Description Let us define a sequence as below f1=A f2=B fn=C*fn-2+D*fn-1+[p/n] Your job is simple, for each task, you should output F n module 10 9 + 7 . Input The first line has only one integer T , indicates the number of tasks. Then, for the next T lines, each line consists of 6 integers, A , B , C , D , P , n . 1 ≤ T ≤ 20 0 ≤ A , B , C , D ≤ 10 9 1 ≤ P , n ≤ 10 9 Sample Input 2 3 3 2 1 3 5 3 2 2 2 1 4 Sample Output 36 24 题意:题目给出ABCDPn,第一项是A,第二项是B,然后还有个递推式,问第n项是多少 思路:如果我们按照他的递推式去推得答案的话,n的范围是1e9肯定会超时,但是我们又必须要用到这个式子,我们就想有没有加快的方法,其实做多了题会发现这是矩阵快速幂的形式 矩阵快速幂就是把你原有的递推式再加快执行, 但是 fn

Python内置函数之enumerate() 函数

喜欢而已 提交于 2021-01-11 08:22:47
enumerate() 函数属于python的内置函数之一; python内置函数参考文档: python内置函数 转载自enumerate参考文档: python-enumerate() 函数 Python内置函数之enumerate() 函数 描述 enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。 Python 2.3. 以上版本可用,2.6 添加 start 参数。 语法 以下是 enumerate() 方法的语法: enumerate(sequence, [start=0]) 参数 sequence -- 一个序列、迭代器或其他支持迭代对象。 start -- 下标起始位置。 返回值 返回 enumerate(枚举) 对象。 实例 以下展示了使用 enumerate() 方法的实例: >>>seasons = [ ' Spring ' , ' Summer ' , ' Fall ' , ' Winter ' ] >>> list(enumerate(seasons)) [(0, ' Spring ' ), (1, ' Summer ' ), (2, ' Fall ' ), (3, ' Winter ' )] >>> list(enumerate(seasons, start

[Cypress] Interact with Hidden Elements in a Cypress Test

别说谁变了你拦得住时间么 提交于 2021-01-11 07:56:02
We often only show UI elements as a result of some user interaction. Cypress detects visibility and by default won’t allow your test to interact with an element that isn’t visible. In this lesson, we’ll work with a button that is shown on hover and see how you can either bypass the visibility restriction or use Cypress to update the state of your application, making items visible prior to interacting with them. For example the delete icon was hidden by default, only show up when you hover over it, to test those hidden element. we need to call: .invoke('show') it('should Delete an item',

LeetCode 155:最小栈 Min Stack

岁酱吖の 提交于 2021-01-10 16:55:07
LeetCode 155:最小栈 Min Stack 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) -- 将元素 x 推入栈中。 pop() -- 删除栈顶的元素。 top() -- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。 Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. push(x) -- Push element x onto stack. pop() -- Removes the element on top of the stack. top() -- Get the top element. getMin() -- Retrieve the minimum element in the stack. 示例: MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); --> 返回 -3. minStack.pop(); minStack.top(); --> 返回 0. minStack

Django前端HTML通过JS实现表格可编辑,动态添加行,回车完成新建文件夹

社会主义新天地 提交于 2021-01-09 22:16:26
版本: django:2.1.7 python:3.7 功能描述: 点击“新建文件夹”按钮,在table的末尾增加一行;单击页面的新增行,使单元格td变成可编辑状态;输入内容后,当单元格失去焦点时,保存输入的内容;回车后通过AJAX提交后台完成新建文件夹。 HTML部分代码,id="table2"和EditType="TextBox"后面需要用到。 < button class ="btn btn-default" type ="button" id ="create_dir" name ="create_dir" value ="create_dir" style ='margin-left:10px;margin-right:10px;color:rgb(60, 141, 188);' onclick ="AddRow($('#table2')[0],1)" > 新建文件夹 </ button > < table id ="table2" class ="table table-hover" style ="overflow: auto;" > < tr > < td class ='th3' EditType ="TextBox" > < img src ="/static/img/file4_24.ico" >     {% if fileinfo.search_flag

前端笔记之移动端&响应式(上)媒体查询&Bootstrap&动画库&zepto&velocity

这一生的挚爱 提交于 2021-01-09 17:05:58
一、 媒体 ( 介 ) 查询 1.1 基本语法 媒体查询由媒体类型和一个或多个检测媒体特性的条件表达式组成。媒体查询中可用于检测的媒体特性有: width 、 height 和 color (等)。使用媒体查询可以在不改变页面内容的情况下,为特性的一些输出设备定制显示效果。 使用 @media 查询,你可以针对不同的 媒体类型 ( 媒体、媒介 ) 定义不同的样式。 @media 可以针对不同的 屏幕尺寸 设置不同的样式,特别是如果你需要设置设计响应式的页面, @media 是非常有用的。 基本语法: @media 约束词 媒体类型 修饰词 宽高限制 {css 代码 } @media 媒体类型 and|not|only (媒介约束条件) { CSS-Code; } 咱们页面渲染的 媒介 指的就是:电脑、手机、平板、手表、打印机 ··· 1.2 查询条件 max-width:999px; 最大宽度(当设备小于或等于 999px 时执行) min-width:999px; 最小宽度(当设备大于或等于 999px 时执行) @media ( 条件 1) and ( 条件 2){ 条件 1 和条件成立执行的 CSS 样式 } /* 当屏幕尺寸大于或等于1000px,并且 小于或等于1199px */ @media (min-width: 1000px) and (max-width:

Arraylist 与 LinkedList 异同

大城市里の小女人 提交于 2021-01-09 08:08:28
1. 是否保证线程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全; 2. 底层数据结构: Arraylist 底层使用的是Object数组;LinkedList 底层使用的是双向链表数据结构(JDK1.6之前为循环链表,JDK1.7取消了循环。注意双向链表和双向循环链表的区别:); 详细可阅读JDK1.7-LinkedList循环链表优化 https://www.cnblogs.com/xingele0917/p/3696593.html 3. 插入和删除是否受元素位置的影响: ① ArrayList 采用数组存储,所以插入和删除元素的时间复杂度受元素位置的影响。 比如:执行 add(E e) 方法的时候, ArrayList 会默认在将指定的元素追加到此列表的末尾,这种情况时间复杂度就是O(1)。但是如果要在指定位置 i 插入和删除元素的话( add(int index, E element) )时间复杂度就为 O(n-i)。因为在进行上述操作的时候集合中第 i 和第 i 个元素之后的(n-i)个元素都要执行向后位/向前移一位的操作。 ② LinkedList 采用链表存储,所以插入,删除元素时间复杂度不受元素位置的影响,都是近似 O(1)而数组为近似 O(n)。 4. 是否支持快速随机访问: LinkedList

List集合学习

馋奶兔 提交于 2021-01-09 05:58:47
Java中常用的List子类主要有: ArrayList、LinkedList、Vector 。有序( 存储和取出的元素一致),可重复的。 三者比较 1:访问:ArrayList和Vector都实现了RandomAccess接口,提供了随机访问功能,查询O(1);LinkedList是链表,查询O(n); 2:增删:ArrayList和Vector底层是数组,增删容易引起大量的内存操作,效率较慢;LinkedList是链表实现,增加和删除较快; 3:线程安全性:Vector是线程安全的,大部分的方法都用了syncrhoized关键字修饰。如果是 单线程 下使用,可以用 Arrayist ,如果是 多线程 操作的list,则可以用 Vector 来保证线程安全。 4:ArrayList每次扩容增加50%,Vector扩容增加一倍。 一:ArrayList ArrayList实现了List接口,实现了一系列的add()/get()/clear()/remove()等接口中的方法。其底层其实是一个数组,通过对数组上一系列操作的封装来实现list的各种功能的。   1:ArrayList 实际上是 通过一个数组去保存数据的 。当我们构造ArrayList时;若使用默认构造函数,则ArrayList的 默认容量大小是10 。 2:当ArrayList容量不足以容纳全部元素时