Jay*_*ant 1 html python selenium
我正在尝试在网站上使用python硒上传文件,该网站的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>
Run Code Online (Sandbox Code Playgroud)
我试图通过以下代码使元素可见:
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']")
Run Code Online (Sandbox Code Playgroud)
运行脚本后,脚本将停止,而不会上传文件并且不会引发任何错误。
使用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)
Run Code Online (Sandbox Code Playgroud)
PS的使用的style属性是的实现细节如何元件被样式。在这种情况下,您实际上只关心样式是什么,因此最好将样式专门设置为所需样式,而不是删除实现它的特定方法。前者应不那么脆弱。
PPS您可能不需要使用XPath进行像通过ID查找一样简单的操作。(ID在所有元素上都应该是唯一的;否则,它们并不是真正的ID。)
| 归档时间: |
|
| 查看次数: |
2673 次 |
| 最近记录: |