selenium.common.exceptions.WebDriverException:消息:找不到文件:/ path / to / file

时间:2017-08-17 18:53:13

标签: python-3.x selenium

html部分如下所示:

...
<form action="/upload/select-single/" method="post" enctype="multipart/form-data">
  <input type="hidden" name="csrfmiddlewaretoken" value="U3Uh3EAYWXaWEiNaWC3zcCQutQe8hGM53u4BTx810o08t1GwOfIJI2ayHCFQFySw">
  <p>
    <label for="id_file_field">File field:</label>
    <input id="id_file_field" name="file_field" type="file" multiple="" required="">
  </p>
  <input id="submit" type="submit" value="submit">
</form>
...
像这样的硒测试:

...
btn_choose_file = self.browser.find_element_by_id("id_file_field")
# write file path to field
# to check that I really selected the field, I tried btn_choose_file.click() -> and it works
btn_choose_file.send_keys('/path/to/file')  # -> THIS is the line which seems to cause the problem
# click submit
self.browser.find_element_by_id("submit").click()
...

不幸的是,当执行测试时会出现此错误

  

selenium.common.exceptions.WebDriverException:消息:找不到文件:/ path / to / file

这是由于文件路径通过btn_choose_file.send_keys('/path/to/file')

发送到输入元素的部分

注意:真正的&#39; / path / to / file&#39;是以下

  • / Users / udos / development / trails / processfile / gpx_data / test_data / suite 001 - val poschiavo / Bernina - Le Prese.gpx (该文件存在且我从IDE复制了路径)
很奇怪的行为。此测试之前正在运行,不知怎的,我设法打破了它......

任何建议可能是什么原因?

  

更新
将Firefox从版本55.0.2降级到54.0.1&#34;已修复&#34;问题。
见 - &gt; https://stackoverflow.com/a/45753912/420953

3 个答案:

答案 0 :(得分:2)

解决此问题的一种方法是用“\”(python中的“\\”)替换文件名中的所有“/”出现。

至少在Windows上这项工作。

答案 1 :(得分:1)

此错误是由于Firefox更新到版本55.0.2(2天前自动发生,因为我已配置自动更新)

以下geckodriver问题指出了我的方向

然后我按照文章

中的说明将我的Firefox版本降级为54.0.1

有了这个,硒测试再次运行。

答案 2 :(得分:1)

在我安装并使用chromewebdriver这个bug之后。像firefox驱动程序一样工作,我的所有测试运行顺利。我建议你尝试一下,至少它对我来说就像一个魅力