首先页面元素隐藏有五种方法:
1. opacity: 0;
opacity 属性的意思是设置一个元素的透明度。它不是为改变元素的边界框(bounding box)而设计的。这意味着将 opacity 设为 0 只能从视觉上隐藏元素。而元素本身依然占据它自己的位置并对网页的布局起作用。它也将响应用户交互。这样的组件用selenium是可以操作的,看 @SitePoint 提供的例子“用 opacity 隐藏元素”,但isdisplay是false的
2. visibility: hidden;
将它的值设为 hidden
将隐藏我们的元素。如同 opacity
属性,被隐藏的元素依然会对我们的网页布局起作用。与 opacity
唯一不同的是它不会响应任何用户交互,同样isdisplay是false的
3. display: none;
display
属性依照词义真正隐藏元素。将 display
属性设为 none
确保元素不可见并且连盒模型也不生成。使用这个属性,被隐藏的元素不占据任何空间。不仅如此,一旦 display
设为 none
任何对该元素直接打用户交互操作都不可能生效
4. position: absolute; top: -9999px; left: -9999px;
这种方法的主要原理是通过将元素的 top 和 left 设置成足够大的负数,使它在屏幕上不可见,selenium无法操作这样的元素
5. clip-path: polygon(0px 0px,0px 0px,0px 0px,0px 0px);
隐藏元素的另一种方法是通过剪裁它们来实现。在以前,这可以通过 clip
属性来实现,但是这个属性被废弃了,换成一个更好的属性叫做 clip-path。
而以前的clip隐藏元素是 rect(0px, 0px, 0px, 0px)
还有两种对应selenium来说也是隐藏的元素,无法操作
1. height and width are both <0
2. for an input, the attribute type = hidden