Locator

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() 就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到

设置坐标轴刻度的位置和样式

可紊 提交于 2021-01-30 12:39:24
欢迎关注”生信修炼手册”! 在matplotlib中,通过子模块ticker可以对坐标轴刻度的位置和样式进行设置。刻度线分为major和minor ticks, 通过以下4个函数可以对其位置和样式进行设置 1. set_major_locator 2. set_minor_locator 3. set_major_formatter 4. set_minor_formatter 1. locator ticker模块中提供了多种locator类,部分列表如下 1. AutoLocator, 默认值,自动对刻度线的位置进行设置 2. MaxNLocator, 根据提供的刻度线的最大个数,自动设置 3. IndexLocator, 根据起始位置和间隔来设置刻度线 4. MultipleLocator, 根据指定的间隔来设置刻度线 5. FixedLocator, 根据提供的列表元素来设置刻度线 6. NullLocator,不显示刻度线 通过对以下所示的图,设置不同的Locator来看下其作用,代码如下 > >> import matplotlib.pyplot as plt > >> import numpy as np > >> x = np.linspace(0, 2 * np.pi, 50) > >> plt.plot(x, np.sin(x), label= 'sin' )

matplotlib修改坐标轴刻度值,刻度个数

半城伤御伤魂 提交于 2021-01-30 12:39:06
Matplotlib 中的 ticker 模块用于支持坐标轴刻度的修改,调用下列命令可以初步查看主副坐标轴刻度的数值定位方式(locator)与具体格式(formatter)等。 详情: http://matplotlib.org/api/axis_api.html ax .xaxis .get_major_ticks ( ) ax .xaxis .get_minor_ticks ( ) ax .xaxis .get_major_locator ( ) ax .xaxis .get_minor_locator ( ) ax .xaxis .get_major_formatter ( ) ax .xaxis .get_minor_formatter ( ) 设置主副刻度对象属性 # encoding:utf-8 import matplotlib.pyplot as plt from matplotlib.ticker import MultipleLocator, FormatStrFormatter import numpy as np def test(): ax = plt.subplot( 111) # 注意:一般都在ax中设置,不再plot中设置 t = np.arange( 0.0, 100.0, 1) s = np.sin( 0.1 * np.pi * t) * np

matplotlib| 01. 坐标轴刻度样式设置

冷暖自知 提交于 2021-01-30 11:52:31
01. 坐标轴刻度样式设置 import matplotlib.pyplot as plt import numpy as np from matplotlib.ticker import AutoMinorLocator,MultipleLocator,FuncFormatter 主要使用到的函数 MultipleLocator() 定义主刻度线的间隔 AutoMinorLocator() 定义次刻度的间隔 FuncFormatter() 设置自定义的刻度标签格式(如小数位数) FormatStrFormatter() 设置自定义的刻度标签格式(如小数位数、添加单位符号) ax.xaxis.set_major_locator() ax.xaxis.set_minor_locator() 设置主/次坐标轴的刻度位置 ax.xaxis.set_major_formatter ax.xaxis.set_minor_formatter() 设置主/次坐标轴的刻度 格式 (小数位数) ax.tick_params() 设置主/次坐标轴刻度线和刻度标签 样式 (大小、颜色) ax.xaxis.get_ticklabels() ax.xaxis.get_ticklines() 获取主/次坐标轴刻度线和刻度标签对象 x=np.linspace(0.5,3.5,100) y=np.sin(x)

java下载HLS视频

痴心易碎 提交于 2021-01-23 20:07:37
转自大佬 https://www.cnblogs.com/developer-ios/p/12460006.html https://www.jianshu.com/p/dbac4c041de8 HLS简介 M3U8,用 UTF-8 编码。"M3U" 和 "M3U8" 文件都是苹果公司使用的 HTTP Live Streaming(HLS) 协议格式的基础; 是 Unicode 版本的 M3U M3U8文件是M3U文件的一种,只不过它的编码格式是UTF-8。M3U使用Latin-1字符集编码。M3U的全称是Moving Picture Experts Group Audio Layer 3 Uniform Resource Locator,即mp3 URL。M3U是纯文本文件; 所以UTF-8编码的M3U文件也简称为 M3U8; HLS 是一个由苹果公司提出的基于 HTTP 的 流媒体 网络传输协议。 HLS 的工作原理是把整个流分成一个个小的基于 HTTP 的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的 extended M3U (m3u8) playlist文件,用于寻找可用的媒体流。 HLS 只请求基本的 HTTP 报文

Linux查看硬件信息命令

人走茶凉 提交于 2021-01-20 01:56:58
一、查看服务器硬件信息 (1)查看服务器型号、序列号 [root@Master ~]# dmidecode|grep "System Information" -A9|egrep "Manufacturer|Product|Serial" (2)查看主板型号 [root@Master ~]# dmidecode |grep -A16 "System Information$" (3)查看BIOS信息 [root@Master ~]# dmidecode -t bios # dmidecode 2.12 SMBIOS 2.8 present. Handle 0x0008, DMI type 0, 24 bytes BIOS Information Vendor: HP Version: U19 Release Date: 12/27/2015 Address: 0xF0000 Runtime Size: 64 kB ROM Size: 16384 kB Characteristics: PCI is supported PNP is supported BIOS is upgradeable BIOS shadowing is allowed ESCD support is available Boot from CD is supported Selectable boot is

NATv6是个笑话,那么IPv6本身呢?

北慕城南 提交于 2020-12-20 14:03:19
近期遇到一个IPv6的NAT问题,在解决了之后总想写一点形而上的东西,什么是正确的,什么是错误的,什么合理,什么不合理,无关文档,无关代码,甚至无关技术,仅仅随便聊聊。昨天下班的路上整理了一下思路,周末了,写一点吧。 如果一个报文过大却不能分片的时候,比方说携带了DF标志的IPv4报文和所有的IPv6报文,转发设备会给数据的始发站回送一则ICMP消息,意思是你这报文太大了,请缩小数据重新发。 对于IPv4的情况,我们不用太在乎这种ICMP消息,因为IPv4网络中,IP报文本身只要没有DF标记,就是可以任意分片的,即便携带了DF标记,我们也有足够的经验去对应,但是对于IPv6的情况,事情就变得复杂了,特别是中间链路存在NAT设备的情况下。 IPv6报文除了始发站之外,全程不能分片,因此如果遭遇了MTU小于报文大小的设备,就必须保证该设备回送的ICMP too big消息可以正确到达始发站。在标准的逐跳IPv6网络上,这没有什么问题,因为无论沿着哪条路径,ICMP消息只要到达始发站就万事大吉。然而,如果原始报文中间经过NAT设备,那么就必须严格保证回送的ICMP消息经过同一个NAT设备才行,而这个条件在真实网络中,不采用特殊手段是不能保证的,特别是ECMP情形下。 我们来看一个来自Linux内核nf_conntrack代码注释里的case: 下图展示了该case和NAT联动的各种情况:

MVVMLight学习笔记(二)---MVVMLight框架初探

可紊 提交于 2020-12-19 04:53:03
一、MVVM分层概述 MVVM中,各个部分的职责如下: Model: 负责数据实体的结构处理,与ViewModel进行交互; View: 负责界面显示,与ViewModel进行数据和命令的交互; ViewModel: 负责前端视图业务级别的逻辑结构组织,并将其反馈给前端。 二、MVVMLight框架初探 通过NuGet安装MVVM Light 框架后,我们新建的Wpf项目中会自动生成一个ViewModel文件夹,里面有MainViewModel.cs和ViewModelLocator.cs两个文件。 下面我们就首先分析下这两个文件的内容: MainViewModel.cs文件分析: MainViewModel.cs文件中只有一个类MainViewModel,该类是主窗口MainWindow对应的ViewModel,继承自类ViewModelBase ViewModelBase类又继承类ObservableObject,同时实现ICleanup接口 ObservableObject类实现INotifyPropertyChanged接口,用于通知属性的改变 由此分析,我们可以得出以下一般结论: 当我们定义一个自己的ViewModel时,一般让自定义ViewModel继承自ViewModelBase类,这样当ViewModel中属性发生变化的时候,就可以自动通知对应的VIew。

一文搞懂网络知识,IP、子网掩码、网关、DNS、端口号

不想你离开。 提交于 2020-11-15 11:49:51
网络的基本概念 客户端:应用 C/S(客户端/服务器) B/S(浏览器/服务器) 服务器:为客户端提供服务、数据、资源的机器 请求:客户端向服务器索取数据 响应:服务器对客户端请求作出反应,一般是返回给客户端数据 URL Uniform Resource Locator(统一资源定位符) 网络中每一个资源都对应唯一的地址——URL IP 、子网掩码 、路由器 、DNS IP地址 IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址(每个机器都有一个编码,如MAC上就有一个叫MAC地址的东西)的差异。是32位二进制数据,通常以十进制表示,并以“.”分隔。IP地址是一种逻辑地地址,用来标识网络中一个个主机,在本地局域网上是惟一的。 IP IP(网络之间互连的协议)它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。IP地址有唯一性,即每台机器的IP地址在全世界是唯一的。这里指的是网络上的真实IP它是通过本机IP地址和子网掩码的"与"运算然后再通过各种处理算出来的(要遵守TCP协议还要加报文及端口什么的,我没有细追究,现在还用不上,反正暂时知道被处理过的就行了),顺便教大家查自己真实IP的方法: 子网掩码