Python-Selenium "input type file"上传

标签 python selenium

我正在尝试使用 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 页面。

enter image description here

更新:

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/

相关文章:

java - 在 Selenium 测试中处理机器人类步骤的替代方法

python - 函数返回链式值/设置变量本身是pythonic吗?

python - 使用 self.methods 进行多重处理

java - Selenium Webdriver java 与 ( . ) 被替换

python - Selenium Chromedriver 错误代码 : 3221225477

java - 如何使用 selenium webdriver 将 HashSet 和 LinkedHashSet 与 List<WebElement> 结合使用

javascript - 无法使用 Protractor 虚拟重复选择元素

python - 检索记录 MySql 数据库 PyDAL

python - python 的 ORM 库 peewee 中与foreignkeyfield对象一起使用的 "related_name"属性是什么?

python - 函数平方二维数组python