element

Fast alternatives for `element.clientHeight` and `element.offsetHeight`

别来无恙 提交于 2021-02-11 14:23:39
问题 I need the element.clientHeight and element.offsetHeight of an HTMLElement, but calculating it is very slow, and especially, it takes for about 3 seconds my long element that we can scroll on! Is there a fast alternative to these two? getBoundingClientRect() does not work and it has the same performance. Similar question: text editor in textarea SLOW - javascript It seems for the elements doesn't automatically grow, this calculation is very slow. 来源: https://stackoverflow.com/questions

selenium三种等待

无人久伴 提交于 2021-02-11 11:14:19
Selenium 自动化入门小白都有遇到过如下情况:运行时报错说找不到元素,但是检查确认了好多遍元素定位没有问题,怎么会找不到呢? 然后一查,哎呦,果然是 selenium 运行机制都没搞清楚。在我们打开一个页面时,页面有一个加载的过程,但是我们在页面没有加载完的时候去查了那个元素,当然查不到,那怎么办呢?那就等一下呗,等页面都加载完了,或者我要找的元素加载出来了,我再去执行下面的操作。 等待也是有很多讲究的,用的好了才能让自动化更有效率, level 才更高。selenium中支持三种等待方式,各有特点,各有不足,适当运用可以让我们的自动化快的飞起。 一、 强制等待( sleep ) 强制等待方法即用 time.sleep(n) ,当运行到这里的时候,不管是什么情况下,程序运行到这里都会停下来 n 秒, n 秒之后再继续执行下面的操作。 这种等待用作调试很有用,有时候也可以在代码里这样用,但是不建议总是这样等待,太死板,严重影响程序执行速度。 二、 隐性等待( implicitly_wait ) 隐性等待对整个 driver 周期起作用,就是说,selenium中使用的这个浏览器不管打开哪个网站 implicitly_wait 都对它有效。所以它只需要设置一次就行,不要像 sleep 一样走到哪都随手写一个。 那么隐性等待到底是怎么工作的呢? 隐性等待是设置了一个最长等待时间

Selenium 三种等待

允我心安 提交于 2021-02-11 10:40:56
问题 : 强制等待和隐式等待的区别怎么理解? 和pause有什么区别?什么时候适用pause? 第二篇文章更清楚一点。 以下内容引自: https://www.cnblogs.com/xu-jia-li/p/6566709.html 为了提高脚本的稳定性,我们需要在脚本中增加等待时间 第一种:强制等待 Thread.sleep():固定休眠时间设置,Java的Thread类里提供了休眠方法sleep,导入包后就能使用 sleep()方法以毫秒为单位 Thread.sleep(3000); ----执行到此时不管什么就固定的等待三秒之后再接着执行后面的操作 第二种:隐式等待方法 implicitlyWait()方法比sleep()方法智能,sleep()方法只能在一个固定的时间等待,而implicitlyWait()可以在一个时间范围内等待,称为隐式等待 隐式等待采用全部设置,也就是说,你所有的findElement方法都会隐式等待10s driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); ----此方法针对执行脚本的所有对象,等待10秒 第三种:显示等待方法 WebDriverWait() 就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到

Selenium中三种等待的使用方式---规避网络延迟、代码不稳定问题

眉间皱痕 提交于 2021-02-11 09:34:53
在UI自动化测试中,必然会遇到环境不稳定,网络慢的情况,这时如果你不做任何处理的话,代码会由于没有找到元素,而报错。这时我们就要用到wait(等待),而在Selenium中,我们可以用到一共三种等待,每一种等待都有自己的优点或缺点,如何选择最优的等待方式呢。来看下这三种等待方式吧。 time(固定等待) 在开发自动化框架过程中,最忌讳使用Python自带模块的time的sleep方法进行等待,虽然可以自定义等待时间,但当网络条件良好时,依旧按照预设定的时间继续等待,导致整个项目的自动化时间无限延长。不建议使用。(注:脚本调试过程时,还是可以使用的,方便快捷) # 1. 不推荐测试中使用, 会完全阻塞代码进程, 代码调试时可以使用 import time time.sleep( 2 ) # 等待2秒钟后,在开始执行 implicitly_wait(隐式等待) 隐式等待实际是设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间结束,然后执行下一步。这样的隐式等待会有个坑。我们都知道js一般都是放在我们的body的最后进行加载,实际这是页面上的元素都已经加载完毕,我们却还在等带全部页面加载结束。隐式等待对整个driver周期都起作用,在最开始设置一次就可以了。不要当做固定等待使用,到那都来一下隐式等待。 # 2. 隐式等待,失败概率高,可不用 driver

Python+Appium学习篇之WebView处理

…衆ロ難τιáo~ 提交于 2021-02-11 02:26:03
1.认识WebView 实例说明: 当你打开百度阅读APP→VIP全站去广告→用自带的 UI Automator去定位里面的元素,如图: 不管你去定位 '规则详情' '开通'等等,都会定位不到,只能显示一个整体页面,这个就是WebView Note: ① 可以理解与selenium里的iframe类似 ②在右边定位里有明确的表示是 WebView ③点击一个链接后,有进度条加载后页面一般都是Webview. 也就是说,是一个H5页面了 ④UI Automator 不能定位到里面的元素 处理方法1: ①执行 print(driver.contexts) 获取所有的上下文 ②在切换到他的webview里面去(类似selenium里的切换窗口) ③获取到他的webview源码,在其他浏览器打开,获取他的xpath路径,或者其他定位方法 # coding:utf-8 from appium import webdriver import time u ''' 智行火车票,webview页面定位 ''' desired_caps = { ' platformName ' : ' Android ' , ' deviceName ' : ' 9a762346 ' , ' platformVersion ' : ' 6.0.1 ' , ' noReset ' : True, '

Require element based on position and attribute value

送分小仙女□ 提交于 2021-02-10 20:22:36
问题 I have the following XSD (part of the XSD) <xs:element name="sourceValue" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:normalizedString"> <xs:attribute name="label" type="xs:normalizedString" use="required"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> In my XML I have: <?xml version="1.0" encoding="UTF-8"?> <Record xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="assertion.xsd">

Require element based on position and attribute value

不打扰是莪最后的温柔 提交于 2021-02-10 20:19:23
问题 I have the following XSD (part of the XSD) <xs:element name="sourceValue" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:normalizedString"> <xs:attribute name="label" type="xs:normalizedString" use="required"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> In my XML I have: <?xml version="1.0" encoding="UTF-8"?> <Record xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="assertion.xsd">

移动端rem适配屏幕

狂风中的少年 提交于 2021-02-10 08:11:42
   九月已成历史,十月如期而至...可能是九月工作比较清闲,周记就没怎么写,十月决不能这么堕落,立贴为证,至少保证5篇博客!!!如果没学到什么新知识,就对以往的那些工作中常用到的知识点做个总结...话不多说,今天就来谈谈移动端的rem适配...本文将从rem是什么、为什么要用rem适配、怎么用rem来讲解,保证浅显易懂... 1、什么是rem   rem(font size of the root element)是指相对于根元素( <html> )的字体大小的单位。简单的说它就是一个相对单位。看到rem大家一定会想起em单位,em(font size of the element)是指相对于 自身的字体大小 的单位。它们之间其实很相似,只不过一个计算的规则是依赖根元素一个是依赖父元素计算。 2、为什么用rem适配   由于移动端的屏幕众多,就拿iphone来说,iphone5、iphone6、iphone6+分别是320px、375px、414px...Android机的分辨率更是百花齐放...面对这么多的屏幕,px显然不能轻易去适配了,比如设置div的 padding-left为10px时,iphone5中比例和设计稿一致,但iphone6+则显得有点“瘦”了,因此我们要想着去适配不同屏幕的手机,让设计稿在分辨率相差很大的手机上显示的效果也要一样。   早期的适配用百分比

web app变革之rem(手机屏幕实现全适配)

寵の児 提交于 2021-02-10 07:56:19
以往web移动适配,常规写法是:media only screen @media only screen and (min-device-width: 320px){ //针对iPhone 3 } @media only screen and (min-device-width: 320px)and (-webkit-min-device-pixel-ratio: 2) { //针对iPhone 4, 5c,5s, 所有iPhone6的放大模式,个别iPhone6的标准模式 } @media only screen and (min-device-width: 375px)and (-webkit-min-device-pixel-ratio: 2) { //针对大多数iPhone6的标准模式 } @media only screen and (min-device-width: 375px)and (-webkit-min-device-pixel-ratio: 3) { //针对所有iPhone6+的放大模式 } @media only screen and (min-device-width:412px) and (-webkit-min-device-pixel-ratio: 3) { //针对所有iPhone6+的标准模式,414px写为412px是由于三星Nexus

ArrayList(JDK1.8)源码解析

孤街醉人 提交于 2021-02-10 05:14:24
既然是看源码,那我们要怎么看一个类的源码呢?这里我推荐的方法是: 1)看继承结构 看这个类的层次结构,处于一个什么位置,可以在自己心里有个大概的了解。 2)看构造方法 在构造方法中,看做了哪些事情,跟踪方法中里面的方法。 3)看常用的方法 跟构造方法一样,这个方法实现功能是如何实现的 注:既然是源码,为什么要这样设计类,有这样的继承关系。这就要说到设计模式的问题了。所以我们要了解常用的设计模式,才能更深刻的去理解这个类。 简介 ArrayList 是 Java 集合框架中 List 接口的一个实现类。底层是数组,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。 ArrayList是Vector的翻版,区别在于ArrayList是线程不安全的,而Vector则是线程安全的。但是Vector是一个较老的集合,具有很多缺点,不建议使用,这里我们就不对其进行分析了。 ArrayList 可以说是我们使用最多的 List 集合,它有以下特点: 它是基于数组实现的List类 可以动态地调整容量 有序的(元素输出顺序与输入顺序一致) 元素可以为 null 不同步,非线程安全,效率高 查询快,增删慢 占用空间更小,对比 LinkedList,不用占用额外空间维护链表结构 ArrayList 为什么有这些优点呢?我们通过源码来分析分析。在阅读源码前先来看看ArrayList继承关系。