隐藏文件输入时如何使用Selenium上传文件?

我正在尝试在现代网页上自动执行文件上传,该网页在旧的之上使用了一些花哨的拖放上传面板。 该元素仍然在页面上,但Selenium不能使用它 – 我得到了着名的

 "Element is not currently visible and so may not be interacted with" 

错误。 我想我有两个选择:

  1. 使元素以某种方式显示 – 但是调用jQuery(...).show()对它没有帮助,我不太清楚为什么F12工具会将元素报告为可见但是Selenium仍然认为它不是(并且,说实话,我也看不到文件字段,F12工具只是突出显示页面上的矩形区域)
  2. 通过JavaScript设置的值但我得到各种安全错误(尝试过Firefox和Chrome)。

我该怎么办? 理想情况下,无论元素是否可见,都会有一种强制Selenium执行操作的方法,但我不认为这是可能的,是吗?

使用替代方法隐藏文件输入,例如:

  • 绝对定位屏幕外

  • 绝对定位+剪辑:rect

然后它会工作。

参考

  • 如何在Html文件上传中隐藏文本字段

  • 在JavaScript中,我可以以编程方式为文件输入元素触发“单击”事件吗?

  • Blueimp文件上传IE 8中没有发生任何事情

  • 文件输入javascript点击生成的不是真正的鼠标点击铬