我正在尝试使用 python 和 selenium 将文件上传到网站。我尝试了以下方法
driver = webdriver.Firefox()
driver.get("ip-address")
方法一:
test = driver.find_element_by_id("selectedFile")
test.send_keys('/Users/knightfox/Desktop/file.txt')
方法2:
test = driver.find_element_by_xpath("//input[@type='file']")
test.send_keys('/Users/knightfox/Desktop/file.txt')
方法3:
test = driver.find_element_by_css_selector('input[type="file"]')
test.send_keys(r'/Users/knightfox/Desktop/file.txt')
但是执行时出现以下错误。
Traceback (most recent call last):
File "/home/knightfox/Desktop/bell/sel.py", line 18, in <module>
test.send_keys(r/Users/knightfox/Desktop/file.txt)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webelement.py", line 479, in send_keys
'value': keys_to_typing(value)})
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webelement.py", line 628, in _execute
return self._parent.execute(command, params)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 312, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: Element <input id="selectedFile" name="file" type="file"> is not reachable by keyboard
我正在使用Python 2.7。以下是 html 页面。
更新:
Ian 的以下代码解决了该问题。
field = driver.find_element_by_id("selectedFile")
driver.execute_script("arguments[0].style.display = 'block';", field)
field = driver.find_element_by_id("selectedFile")
field.send_keys('/Users/knightfox/Desktop/file.txt')
最佳答案
文件字段被其 style="display: none;"
隐藏。在与它交互之前,您需要使其可见。
field = driver.find_element_by_id("selectedFile")
driver.execute_script("arguments[0].style.display = 'block';", field)
field.send_keys('/Users/knightfox/Desktop/file.txt')
关于Python-Selenium "input type file"上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49275041/