我尝试使用python和selenium将文件上传到网站。我尝试了以下方法
driver = webdriver.Firefox()
driver.get("ip-address")
方法1:
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')
答案 0 :(得分:0)
文件字段由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')