Selenium处理隐藏元素
在HTML中,由于页面美化和用户交互的需求,元素隐藏的使用非常常见,比如下拉菜单、内容折叠、对话框以及上传文件框等。
隐藏常见有以下几种表现形式。
hidden:占据空间,无法点击
style="display: none" :最常见,不占据空间,无法点击
style="visibility: hidden":占据空间,无法点击
style="overflow: hidden":占据空间,无法点击
style="opacity: 0":占据空间,无法点击
style="position: absolute; top: -999em":不占据空间,无法点击
style="position: relative; top: -999em; ":占据空间,无法点击
style="position: absolute; visibility: hidden; ":不占据空间,无法点击
style="height: 0; overflow: hidden; ":不占据空间,无法点击
style="opacity: 0; filter:Alpha(opacity=0); ":占据空间,可以点击
style="position: absolute; opacity: 0; filter:Alpha(opacity=0); ":不占据空间,可以点击
style="zoom: 0.001; -moz-transform: scale(0); -webkit-transform: scale(0);-o-transform: scale(0);transform: scale(0);":IE6/IE7/IE9不占据空间,IE8/FireFox/Chrome/Opera占据空间。都无法点击
style="position: absolute;zoom: 0.001;-moz-transform: scale(0);-webkit-transform: scale(0);-o-transform: scale(0);transform: scale(0);" :不占据空间,无法点击
多数情况下,隐藏元素时不可以直接操作的。如果想操作隐藏元素,如果不能通过使用正常的页面步骤触发其显示,则可以通过执行JavaScript脚本,通过移除掉元素的hidden或style属性来使得元素显示并可以进行操作。
elm = driver.find_element('id', 'anywhere-upload-input') js = 'arguments[0].removeAttribute("style");' driver.execute_script(js, elm)