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

标签 python html selenium

我正在尝试在一个网站上使用 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。)

关于python - 如何使(样式 ="display: none;")元素在 python selenium 的 HTML 中可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49307040/

相关文章:

python - 在大型 python 项目中查找死代码

php - 机器学习: Predict output number from input vector trained "matched"

Python Pandas : equivalent to SQL's aggregate functions?

python - 比较两个日期时出错

javascript - 如何在点击 <a> 标签时更改 CSS 链接?

java - 如何使用 java selenium 重构按钮 webElement?

python - 为什么 selenium webdriver 找不到我的元素

python - Selenium 驱动程序 : find elements by xpath; how do i parse a level 2 table (i. e.表中表)

javascript - 为什么我无法使用 JQuery 更新输入标记的值并将 € 字符放入其中?我得到的是 â 字符串而不是 €

html - 如何防止切换复选框元素与另一个元素重叠?