Skip to main content
 首页 » 编程设计

python之如何使(样式 ="display: none;")元素在 python selenium 的 HTML 中可见

2025年05月04日18mayingbao

我正在尝试在一个网站上使用 python selenium 上传文件,该网站的 html 文件字段如下所示:

 <div id="fallback" style="display: none;"> 
    <input id="upload-input" type="file" name="file" multiple="multiple"> 
    <div id="upload-progress" class="upload-progress"></div> 
  </div> 

我试图通过以下代码使元素可见:

elem = driver.find_element_by_xpath("//input[@id='upload-input']") 
driver.execute_script("arguments[0].removeAttribute('style')", elem) 
elem = driver.find_element_by_xpath("//input[@id='upload-input']") 

运行脚本后,脚本停止,没有上传文件,也没有抛出任何错误。

使用 elem.is_displayed() 后,我发现即使运行了上面的代码块,元素仍然没有显示。

请您参考如下方法:

style属性在包装上 <div> ,但您正试图将其从 <input> 中删除:

container = driver.find_element_by_id("fallback") 
driver.execute_script("arguments[0].style.display = 'block';", container) 
 
input = driver.find_element_by_id("upload-input") 
input.send_keys(path_to_file) 

P.S. style 的使用属性是如何元素样式的实现细节。在这种情况下,您实际上只关心什么样式,因此最好将其具体设置为您想要的样式,而不是删除特定样式实现它的方式。前者应该不那么脆。

P.P.S. 对于像按 ID 查找这样简单的事情,您可能不需要使用 XPath。 (所有元素的 ID 都应该是唯一的;否则它们就不是真正的 ID。)