精华内容
下载资源
问答
  • 四元素(Quaternion)与旋转

    千次阅读 2015-10-11 18:22:04
    四元素性质及其与欧拉角、旋转矩阵的转换关系

    一、四元数的含义


    1、数学含义及表示方法

          三维复数域可表示为 Q = [x, y, z,w] 或 Q = w + x*i + y*j + z*k, 其中 w 是实部,[x, y, z]是虚部,[i, j, k]是虚轴单位向量


    2、物理含义

            四元数常用于表示三维空间的旋转变换,注意它表示一个变换,不是一个状态,它描述了一个旋转轴[α, β, γ]θ,对应的四元数为Q = [cos(θ/2), α*sin(θ/2), β*sin(θ/2), γ*sin(θ/2)]一般我们使用右手坐标系,逆时针旋转为正

           与其它旋转表示方法相比,例如欧拉角、矩阵,四元数并不直观,但具有以下优点:

    • 四元数不存在欧拉角中的 “gimbal lock” 问题,翻译成中文叫“万向节死锁”,名字很装B有木有,其实就是当三个轴中的两个轴由于旋转重合了,导致旋转失去了一个自由度,想具体了解的,请参考欧拉角与万向节死锁带视频的,非常形象)
    • 四元数只有四个数,矩阵表示变换一般都是 4*4 的,存储计算量更小(此优点可忽略偷笑
    • 两个四元数之间更容易插值(实际应用中,什么时候需要插值疑问

           注意:四元素在多次运算后,会存在累计误差,需要定期归一化处理


    二、四元数的基本运算及其物理意义


         1. 虚轴的性质

              i * i = -1; i * j = k(右手定责:i 转到j轴,大拇指指向的方向,如下图);j * i = -k 

                           


         2. 模长 Length:sqrt(x * x + y * y + z * z + w * w)

         3. 归一化 Normalize:(x, y, z, w)./Length;用四元数表示旋转需要归一化处理

         4. 共轭 conjugate:(-x, -y, -z, w),对比四元数物理含义易得:共轭表示旋转轴不变,旋转角相反

         5.  点乘Dot(q1 .* q2):q1.x * q2.x + q1.y * q2.y + q1.z * q2.z + q1.w * q2.w

         6. 叉乘(q1 * q2):两个四元数的各元素两两相乘,虚轴的乘法按上述第一点"虚轴的性质”处理

              叉乘的物理含义:先绕 q2 做旋转变换,再绕 q1 做旋转变化

         7. 向量 v 绕四元数旋转:q * v * conjugate(q)


    三、 四元数与欧拉角、旋转矩阵之间的相互转换


           该节内容请直接参考代码(下载),此代码由虚拟现实(VR)公司Oculus 原创,包含上述四元数的基本运算,矩阵的基本运算,四元数、欧拉角、旋转矩阵之间的相互转换



    
    
    展开全文
  • 四元素的的共轭和逆

    千次阅读 2018-03-16 09:30:17
    注意:四元素在多次运算后,会存在累计误差,需要定期归一化处理 二、四元数的基本运算及其物理意义  1. 虚轴的性质   i * i = -1; i * j = k(右手定责:i 转到j轴,大拇指指向的方向,如下图);j * i = -k    ...

    四元数的共轭和逆

     

    四元数   Q(p,v)   v =(x,y,z)共轭  即为: Q*(p,-v);轴和 四元数  是反向的,

    四元数   Q(p,v)   v =(x,y,z)逆为:        Q*/四元数长度     注:四元数的逆就是  与其相乘 为1  ,这样就很明显了,       Q*Q*  =q^2  +V^2    ,而四元数长度  即为  q^2 +v^2   这样相除就是1,达到了逆的效果

    ================================================================

    一、四元数的含义


    1、数学含义及表示方法

          三维复数域可表示为 Q = [x, y, z,w] 或 Q = w + x*i + y*j + z*k, 其中 w 是实部,[x, y, z]是虚部,[i, j, k]是虚轴单位向量


    2、物理含义

            四元数常用于表示三维空间的旋转变换,注意它表示一个变换,不是一个状态,它描述了一个旋转轴[α, β, γ]θ,对应的四元数为Q = [cos(θ/2), α*sin(θ/2), β*sin(θ/2), γ*sin(θ/2)]一般我们使用右手坐标系,逆时针旋转为正

           与其它旋转表示方法相比,例如欧拉角、矩阵,四元数并不直观,但具有以下优点:

    • 四元数不存在欧拉角中的 “gimbal lock” 问题,翻译成中文叫“万向节死锁”,名字很装B有木有,其实就是当三个轴中的两个轴由于旋转重合了,导致旋转失去了一个自由度,想具体了解的,请参考欧拉角与万向节死锁带视频的,非常形象)
    • 四元数只有四个数,矩阵表示变换一般都是 4*4 的,存储计算量更小(此优点可忽略偷笑
    • 两个四元数之间更容易插值(实际应用中,什么时候需要插值疑问

           注意:四元素在多次运算后,会存在累计误差,需要定期归一化处理


    二、四元数的基本运算及其物理意义


         1. 虚轴的性质

              i * i = -1; i * j = k(右手定责:i 转到j轴,大拇指指向的方向,如下图);j * i = -k 

                           


         2. 模长 Length:sqrt(x * x + y * y + z * z + w * w)

         3. 归一化 Normalize:(x, y, z, w)./Length;用四元数表示旋转需要归一化处理

         4. 共轭 conjugate:(-x, -y, -z, w),对比四元数物理含义易得:共轭表示旋转轴不变,旋转角相反

         5.  点乘Dot(q1 .* q2):q1.x * q2.x + q1.y * q2.y + q1.z * q2.z + q1.w * q2.w

         6. 叉乘(q1 * q2):两个四元数的各元素两两相乘,虚轴的乘法按上述第一点"虚轴的性质”处理

              叉乘的物理含义:先绕 q2 做旋转变换,再绕 q1 做旋转变化

         7. 向量 v 绕四元数旋转:q * v * conjugate(q)


    三、 四元数与欧拉角、旋转矩阵之间的相互转换


           该节内容请直接参考代码(下载),此代码由虚拟现实(VR)公司Oculus 原创,包含上述四元数的基本运算,矩阵的基本运算,四元数、欧拉角、旋转矩阵之间的相互转换


    展开全文
  • 包含个js文件:CSS3DRenderer three.min.js TrackballControls tween.min 一个3D实例
  • 四元素姿态解算 ---地磁计融合解读

    千次阅读 2016-08-16 18:20:07
     笔者最近在做轴,涉及到地磁计的融合算法,网上大多数是x-IMU的融合代码,但是这段代码对于地磁计的融合说明没有做过多的解释,网上没有相关讨论,仅在阿莫论坛看到一篇相关的代码解释,里面有关于地磁计融合...
    四元数姿态解算中的地磁计融合解读
    

        笔者最近在做四轴,涉及到地磁计的融合算法,网上大多数是x-IMU的融合代码,但是这段代码对于地磁计的融合说明没有做过多的解释,网上没有相关讨论,仅在阿莫论坛看到一篇相关的代码解释,里面有关于地磁计融合部分的解说,个人觉得说的不是很清楚,虽然是正确的,我这里再补充啰嗦一下。

        首先给出x-IMU关于陀螺仪、加速度计、地磁计的融合代码:

    void MahonyAHRSupdate(float gx, float gy, float gz, float ax, float ay, float az, float mx, float my, float mz) {
    	float recipNorm;
        float q0q0, q0q1, q0q2, q0q3, q1q1, q1q2, q1q3, q2q2, q2q3, q3q3;  
    	float hx, hy, bx, bz;
    	float halfvx, halfvy, halfvz, halfwx, halfwy, halfwz;
    	float halfex, halfey, halfez;
    	float qa, qb, qc;
    
    	// Use IMU algorithm if magnetometer measurement invalid (avoids NaN in magnetometer normalisation)
    	if((mx == 0.0f) && (my == 0.0f) && (mz == 0.0f)) {
    		MahonyAHRSupdateIMU(gx, gy, gz, ax, ay, az);
    		return;
    	}
    
    	// Compute feedback only if accelerometer measurement valid (avoids NaN in accelerometer normalisation)
    	if(!((ax == 0.0f) && (ay == 0.0f) && (az == 0.0f))) {
    
    		// Normalise accelerometer measurement
    		recipNorm = invSqrt(ax * ax + ay * ay + az * az);
    		ax *= recipNorm;
    		ay *= recipNorm;
    		az *= recipNorm;     
    
    		// Normalise magnetometer measurement
    		recipNorm = invSqrt(mx * mx + my * my + mz * mz);
    		mx *= recipNorm;
    		my *= recipNorm;
    		mz *= recipNorm;   
    
            // Auxiliary variables to avoid repeated arithmetic
            q0q0 = q0 * q0;
            q0q1 = q0 * q1;
            q0q2 = q0 * q2;
            q0q3 = q0 * q3;
            q1q1 = q1 * q1;
            q1q2 = q1 * q2;
            q1q3 = q1 * q3;
            q2q2 = q2 * q2;
            q2q3 = q2 * q3;
            q3q3 = q3 * q3;   
    
            // Reference direction of Earth's magnetic field
            hx = 2.0f * (mx * (0.5f - q2q2 - q3q3) + my * (q1q2 - q0q3) + mz * (q1q3 + q0q2));
            hy = 2.0f * (mx * (q1q2 + q0q3) + my * (0.5f - q1q1 - q3q3) + mz * (q2q3 - q0q1));
            bx = sqrt(hx * hx + hy * hy);
            bz = 2.0f * (mx * (q1q3 - q0q2) + my * (q2q3 + q0q1) + mz * (0.5f - q1q1 - q2q2));
    
    		// Estimated direction of gravity and magnetic field
    		halfvx = q1q3 - q0q2;
    		halfvy = q0q1 + q2q3;
    		halfvz = q0q0 - 0.5f + q3q3;
            halfwx = bx * (0.5f - q2q2 - q3q3) + bz * (q1q3 - q0q2);
            halfwy = bx * (q1q2 - q0q3) + bz * (q0q1 + q2q3);
            halfwz = bx * (q0q2 + q1q3) + bz * (0.5f - q1q1 - q2q2);  
    	
    		// Error is sum of cross product between estimated direction and measured direction of field vectors
    		halfex = (ay * halfvz - az * halfvy) + (my * halfwz - mz * halfwy);
    		halfey = (az * halfvx - ax * halfvz) + (mz * halfwx - mx * halfwz);
    		halfez = (ax * halfvy - ay * halfvx) + (mx * halfwy - my * halfwx);
    
    		// Compute and apply integral feedback if enabled
    		if(twoKi > 0.0f) {
    			integralFBx += twoKi * halfex * (1.0f / sampleFreq);	// integral error scaled by Ki
    			integralFBy += twoKi * halfey * (1.0f / sampleFreq);
    			integralFBz += twoKi * halfez * (1.0f / sampleFreq);
    			gx += integralFBx;	// apply integral feedback
    			gy += integralFBy;
    			gz += integralFBz;
    		}
    		else {
    			integralFBx = 0.0f;	// prevent integral windup
    			integralFBy = 0.0f;
    			integralFBz = 0.0f;
    		}
    
    		// Apply proportional feedback
    		gx += twoKp * halfex;
    		gy += twoKp * halfey;
    		gz += twoKp * halfez;
    	}
    	
    	// Integrate rate of change of quaternion
    	gx *= (0.5f * (1.0f / sampleFreq));		// pre-multiply common factors
    	gy *= (0.5f * (1.0f / sampleFreq));
    	gz *= (0.5f * (1.0f / sampleFreq));
    	qa = q0;
    	qb = q1;
    	qc = q2;
    	q0 += (-qb * gx - qc * gy - q3 * gz);
    	q1 += (qa * gx + qc * gz - q3 * gy);
    	q2 += (qa * gy - qb * gz + q3 * gx);
    	q3 += (qa * gz + qb * gy - qc * gx); 
    	
    	// Normalise quaternion
    	recipNorm = invSqrt(q0 * q0 + q1 * q1 + q2 * q2 + q3 * q3);
    	q0 *= recipNorm;
    	q1 *= recipNorm;
    	q2 *= recipNorm;
    	q3 *= recipNorm;
    }
    

        相信有很多人已经理解了加速度计补偿陀螺仪漂移的原理,这部分代码在x-IMU官网上已经给出,大家可以自行下载(http://www.x-io.co.uk/open-source-imu-and-ahrs-algorithms/),有能力的可以自行查看Sebastian O.H. Madgwick在2010年4月发表的一篇论文(An efficient orientation filter for inertial and inertial/magneticsensor arrays),可以发现x-IMU官网上的融合代码就是基于此篇论文。

        花了一天时间研究地磁融合代码,总算弄明白了其地磁融合的原理。为了让大家理解Madgwick对地磁量的处理方式,我先从加速度计补偿开始说起。

        首先,东北天坐标系我们称之为n系(地理坐标系,参考坐标系),载体坐标系我们称之为b系,就是我们飞行器的坐标系。对于四元数法的姿态解算,我们求的就是四元数的值;方向余弦矩阵(用于表示n系和b系的相对关系)中的元素本来应该是三角函数,这里由于我们四元数法,所以矩阵中的元素就成了四元数。所以我们的任务就是求解由四元数构成的方向余弦矩阵nCb(nCb表示从b系到n的转换矩阵,同理,bCn表示从n系到b的转换矩阵,他们的关系是转置)。

        显然,上述矩阵是有误差存在的。对于一个确定的向量n,用不同的坐标系表示时,他们所表示的大小和方向一定是相同的。但是由于这两个坐标系的转换矩阵存在误差,那么当一个向量经过这么一个有误差存在的旋转矩阵变换后,在另一个坐标系中肯定和理论值是有偏差的,我们通过这个偏差来修正这个旋转矩阵。我们刚才说了,这个旋转矩阵的元素是四元数,这就是说我们修正的就是四元数,于是乎我们的姿态就这样被修正了,这才是姿态解算的原理。

        我这里再重复一遍,因为这是原理部分。我们的姿态解算求的是四元数,我们是通过修正旋转矩阵中的四元数来达到姿态解算的目的,而不要以为通过加速度计和地磁计来修正姿态,加速度计和地磁计只是测量工具和载体,通过这两个器件表征旋转矩阵的误差存在,然后通过算法修正误差,修正四元数,修正姿态。

        在n系中,加速度计输出为,经过bCn转换之后到b中的值为;在b系中,加速度计的测量值为,现在均表示在b系中的竖直向下的向量,由此,我们来做向量积,得到误差,利用这个误差来修正bCn矩阵,于是乎,我们的四元数就在这样一个过程中被修正了。(实际上这种修正方法只把b系和n系的XOY平面重合起来,对于z轴旋转的偏航,加速度计无可奈何,稍后给详细讲解)但是,由于加速度计无法感知z轴上的旋转运动,所以还需要用地磁计来进一步补偿。

        我们知道加速度计在静止时测量的是重力加速度,是有大小和方向的;同理,地磁计同样测量的是地球磁场的大小和方向,只不过这个方向不再是竖直向下,而是与x轴(或者y轴)呈一个角度,与z轴呈一个角度。记作,这里我们让x轴对准北边,所以by=0,即倘若我们知道bxbz的精确值,那么我们就可以采用和加速度计一样的修正方法来修正。只不过在加速度计中,我们在n系中的参考向量是,变成了地磁计的。不难发现,地磁计无法感知关于y轴上的旋转运动(运动过程中始终有bx2+bz2=常量),所以如果我们知道bx和bz的精确值,那么我们就可以摆脱掉加速度计的补偿,直接用地磁计和陀螺仪进行姿态解算,但是此时就变成了无法感知y轴上旋转运动了(而没有地磁的加速度计是无法感知z轴旋转运动的)。

        但是你看过谁只有陀螺仪和地磁计进行姿态解算吗?没有,因为没人会去测量当地的地磁场相对于东北天坐标的夹角,也就是bx和bz。那么现在怎么办?

    -----

        前面已经讲了,我们的姿态解算就是求解旋转矩阵,这个矩阵的作用就是将b系和n正确的转化直到重合。

        现在我们假设nCb*旋转矩阵是经过加速度计校正后的矩阵,当某个确定的向量(b系中)经过这个矩阵旋转之后(到n系),这两个坐标系在XOY平面上重合,只是在z轴旋转上会存在一个偏航角的误差。下图表示的是经过nCb*旋转之后的b系和n系的相对关系。可以明显发现加速度计可以把b系通过四元数法从任意角度拉到与n系水平的位置上,这时,只剩下一个偏航角误差。这也是为什么加速度计误差修正偏航的原因。


        到这里,就好说了。现在我们反过来从b系推往n系:设地磁计在b系中的输出为,经过nCb*旋转之后得到(n系)。在这个XOY平面上(n系),的投影为bx2,的投影为hx2+hy2。显然,地磁计在XOY平面上(n系)的向量的大小必定相同,所以有bx2= hx2+hy2。而对于bz的处理,我们不做变动,令bz=hz即可。经过这样处理之后的,经过bCn*旋转回转到b系中,得到,这个值再和b系中的地磁计输出做向量积求误差,再次修正bCn*(或者nCb*),得到bCn**(或者nCb**)。这样就完成了一次地磁计的补偿。

        将加速度计没能做到的z轴上的旋转修正,通过地磁计在XOY平面上的地磁力相同原理,得到了修正。于是乎,pitch和roll通过加速度计修正,然后在这个基础之上(该地磁计补偿方法必须依靠加速度计修正提供一致的XOY平面,才会有bx2= hx2+hy2等式成立),yaw通过地磁计来补偿,最终得到了没有偏差的实时姿态(也就是由四元数组成的旋转矩阵)。

     

        如果你真的明白了我所讲的地磁计融合原理,那么现在我去掉加速度计的对于XOY平面的修正,只用陀螺仪和地磁计进行姿态融合,会出现什么情况?

    (答案:只有当飞机在水平面内才能正确得到偏航角,一旦将飞机拉离平衡位置,偏航角就错的一塌糊涂,更别说pitch和roll了。)

    展开全文
  • 闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素 元素之间的转化 - display:block;(将元素变为块级元素) - display:inline; (将元素变为行级元素) - display:inline-block;(将元素变为行级块...

    一、闭合标签和空标签

    HTML中的标签从闭合的角度可以分为闭合标签和空标签。而HTML中大部分标签都是闭合标签,其他少数为空标签。

    常见的空标签有

    • <input />
    • <img />、
    • <area />、
    • <base />、
    • <link />等。

    二、位置特性(块级元素,行内元素,行级块元素)

    位置特性进行分类的,它将元素分为三类:块级元素,行内元素,行级块元素(也称块级行元素)。

    块级元素(block)

    **特点: **

    • 可以设置宽高、内、外边距;
    • 独占一行(即前后均有换行);
    • 块级元素如果不设置宽度和高度,则宽度默认为父级元素的宽度高度则根据内容大小自动填充

    常见的块级元素:
    div、p、h1、h2…hn,ol、ul、dl、li、form、table

    行级元素(inline)

    特点:

    • 不可设置宽高、上下内、外边距。(左右内、外边距设置有效)
    • 其宽度和高度由其内容自动填充
    • 其他行级元素共处一行

    常见的行级元素:

    • a(锚点)
    • b(加粗)
    • i(斜体)
    • span(常用内联容器,定义文本内区块)
    • lable(input 元素定义标注(标记))

    行内块元素(inline-block)

    特点:

    • 可以设置宽高、内外边距;
    • 可以与其他行内元素、内联元素共处一行

    常见的内联元素:
    input、img

    三、元素之间的转化

    可以在行内样式或css样式中改变元素的display将三种元素进行转换。

    • display:block;(将元素变为块级元素)
    • display:inline; (将元素变为行级元素)
    • display:inline-block;(将元素变为行级块元素)

    四、可替换元素

    什么是可替换元素?顾名思义,就是会被替换的元素。

    <img src=xxx.jpg>
    

    我们并没有在 img 标签中写入任何内容,浏览器去下载 src 属性给到的图片,并用该图片资源替换掉 img 标签,而且浏览器在下载前并不知道图片的宽高。所以,可替换元素比较特殊,它的宽高是由其加载的内容决定的。(当然 CSS 可以覆盖其样式)

    例子

    <img src="xxx.jpg">
    

    该图片在页面中展现出来的话,就是图片本身本身的宽高。

    <img width="80" height="80" src="xxx.jpg">
    

    此时该元素展现出来就是宽高为 80 像素。

    如果我们再用 CSS 去覆盖其样式:

    img {
      width: 60px;
      height: 60px;
    }
    

    该元素的展现即为 60 像素。

    MDN 的释义:

    可替换元素(replaced element)的展现效果不是由 CSS 来控制的。这些元素是一种外部对象,它们外观的渲染,是独立于 CSS 的。
    
    简单来说,它们的内容不受当前文档的样式的影响。CSS 可以影响可替换元素的位置,但不会影响到可替换元素自身的内容。
    

    典型的可替换元素有:

    • <iframe>

    • <video>

    • <embed>

    • <img>
      有些元素仅在特定情况下被作为可替换元素处理,例如:

    • <option>

    • <audio>

    • <canvas>

    • <object>

    • <applet>
      HTML 规范也说了<input> 元素可替换,因为 “image” 类型的 <input> 元素就像<img>一样被替换。但是其他形式的控制元素,包括其他类型的 <input> 元素,被明确地列为非可替换元素(non-replaced elements)。

    本文链接:https://blog.csdn.net/qq_39903567/article/details/115283580

    展开全文
  • 上一篇介绍了一个小的测试用例,这一篇来讲一讲Web页面中元素定位的问题。1.name和id其中使用到了name和id定位。但有时候由于开发人员的疏忽或者开发习惯的问题,会漏写name或者id属性。或者有时候如果页面很庞大,...
  • 很多地方都已经介绍了JavaScript在浏览器是如何被执行的,这里介绍一下WebKit是... 首先浏览器的页面解析器(Document Parser)遇到就会发起下载(脚本内容在页面内的就不用下载了)。然后针对不同情况执行的方式有所不
  • JSP 动作元素

    千次阅读 2016-02-03 14:07:57
    与JSP指令元素不同的是,JSP动作元素在请求处理阶段起作用。JSP动作元素是用XML语法写成的。 利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码。 动作元素...
  • java中List元素移除元素的那些坑

    万次阅读 2019-07-20 09:18:00
    本文主要介绍,java中list集合移除元素的那些坑,今天小编就和大家一起来了解一下吧!一、问题案例1.1、for循环移除public static void main...
  • JSP 动作元素

    千次阅读 2018-08-23 18:45:26
    JSP 动作元素 与JSP指令元素不同的是,JSP动作元素在请求处理阶段起作用。JSP动作元素是用XML语法写成的。 利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码...
  • 一、表格元素 HTML5中表格元素的用法。表格的主要用途是以网格的形式显示二维数 1、表格元素总汇 表格的基本构成最少需要三个元素:<table>、<tr>、<td>,其他的一些作为可选辅助存在。 ...
  • 这篇文章主要Selenium+Python自动测试或爬虫中的常见定位方法、鼠标操作、键盘操作介绍,希望该篇基础性文章对你有所帮助,如果有错误或不足之处,请海涵~ 一.定位元素方法 二.操作元素方法 .
  • appium—定位Toast元素

    千次阅读 2018-11-15 09:44:24
    定位Toast元素 Appium1.6.3开始支持识别toast,且是基于uiautomator2,因此需要如下设置 环境准备 步骤一:安装node js 进入官网下载:https://nodejs.org/en/ 下载node js,并安装好 验证是否安装成功:npm -...
  • Selenium无法定位元素的九种解决方案

    千次阅读 多人点赞 2019-05-28 09:00:54
    WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌的页面元素无法直接定位。解决方法:driver.switch_to.frame(id/name/obj)。 switch_to.frame()默认可以直接取表单的id或name属性。如果没有...
  • 纯js实用DOM元素放大缩小特效插件

    千次阅读 2015-04-06 13:00:26
    它可以将页面上的任何元素进行放大缩小。当某个元素处于Zoomerang的监听状态时,点击该元素可以将它放大到屏幕的中间,再次点击它又会回到原来的位置。 使用注意事项: 该元素放大缩小效果依赖于CSS Transform(IE...
  • web自动化测试第2步:定位元素

    千次阅读 2017-06-01 11:24:44
    这一节,我们介绍一下页面元素定位的八种方式和如何通过火狐和谷歌浏览器获取元素定位信息,减少自己的工作量 1.页面元素的定位方法 上一节我们已经配置好了环境并且可以通过脚本打开浏览器了,说明我们已经打开了...
  • script 元素,重绘与回流

    千次阅读 2020-11-02 21:59:53
    一些常用且会导致回流的属性和方法:、比较及避免1.比较2.避免css:JS: 一、script 元素 1.网页运行原理 (1)工作流程 浏览器核心是:渲染引擎和js解释器(js引擎),其对于页面的解析过程大概如下: 浏览器会...
  • HTML5为什么要保留常用元素呢!!!

    千次阅读 2018-02-10 18:58:04
    (保留的)基本元素、&amp;文本格式化元素、&amp;语义相关元素、&amp;超链接和锚点、&amp;列表相关元素、&amp;表格相关元素 1 基本元素 &lt;!--...--&gt; HTML注释 &lt;html&...
  • python Selenium 常见操作 元素定位

    千次阅读 2017-07-16 00:32:01
    一. 定位元素方法  官网地址:...  这里有各种策略用于定位网页中的元素(locate elements),你可以选择最适合的方案,Selenium提供了一下方法来定义一个页面中的元素: find_element_by_idfind_
  • 你是最棒的前言题目:1008 数组元素循环右移问题 (20分)要点:M可能大于N代码一:暴力代码二:反转代码三:投机取巧(输入的时候使用循环队列的思想:)代码:优化,减少交换次数,但是比较难 前言 学得越多,...
  • //获取下载连接元素 WebElement downloadButton = driver.findElement(By.id("messenger-download")); //获取下载连接URL String sourceLocation = downloadButton.getAttribute("href"); //拼接Wget下载命令 String...
  • 在以前的工作中也使用过bootstrapValidator对表单元素进行校验,但涉及到的表单元素都是固定的,所以在页面载入时,对表单元素进行初始化就可以实现。虽然思路很明确,但由于对bootstrapValidator的用法不熟悉,在这...
  • 、MongoDB数据库可视(图形)化管理工具: 1、下载地址:https://www.mongodb.com/try/download/compass ​ 2、注意事项:在MongoDB Compass选择下载时,可选择对应的系统版本(这里以windows系统为例): zip...
  • 月更新正版系统 (Version 1803) 的 ISO 镜像下载了。用户可 前往这里下载正式版镜像 ,提前手动更新到这一版本,大规模的推送在线升级将从 5 月 8 日开始。 那么这次  Windows 10 April 2018 (1803)  有什么新...
  • web robotframework xpath元素定位

    千次阅读 2017-09-25 11:12:15
    在这里,我写的是 //td[@class='text-center']/button[@class='ng-isolate-scope']/span[text()='购买'] ,提示找不到元素,原因是button的class值,我把他改成class='btn btn-outline ng-isolate-scope btn-xs btn...
  • 用 Transition 完成 Fragment 共享元素的切换
  • selenium节点(元素)遍历的疑惑

    千次阅读 2020-06-09 11:59:10
    selenium节点的遍历一、节点遍历是什么二、问题三、解决方法、结语 一、节点遍历是什么 例如: 由于裁判文书网只显示前600个,我的思路就是通过关键词的限定实现内容在600条以内,因而完整的下载需要进行关键词的...
  • z-index使用详解,JavaScript教程网为您讲解如何使用 CSS 的 z-index 属性,浅析CSS——元素重叠及position定位的z-index顺序。 2012040114074097.jpg (50.8 KB, 下载次数: 0) 下载附件 7 分钟前 上传 ...
  • 怎么使用Uiautomatorviewer获取元素的xpath     在学习和使用AndroidADT的时候,元素定位都会使用tools包下面自带工具uiautomatorviewer,但很多时候元素并没有text和id,只有class。但是,大家都知道class很多...
  • selenium验证页面上的UI元素

    千次阅读 2013-07-30 13:00:56
    验证页面上的UI元素,是你在自动化测试案例过程中最常用到的特性。Selenese通过各种方式验证UI元素。 举例,你是否正在测试一下情况: (1)一个UI元素存在于页面上某个位置; (2)特定文本存在于页面上...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 168,323
精华内容 67,329
关键字:

四元素下载