gpt4 book ai didi

python - 通过远程网络驱动程序上传大文件时

转载 作者:行者123 更新时间:2023-12-01 08:27:47 34 4
gpt4 key购买 nike

我必须使用 1GB 上传大文件(超过 remote selenium server 大小)但得到urllib.error.URLError <urlopen error [Errno 32] Broken pipe>错误。

这是一个python代码包括 remote驱动程序设置如下所示:

from selenium.webdriver import ChromeOptions, Remote

options = ChromeOptions()
options.add_argument("--start-maximized")
remote = Remote(command_executor="http://localhost:9515",
desired_capabilities=options.to_capabilities())
remote.find_element_by_css_selector('input[name="file"]'
).send_keys('path/to/file.iso'))

这是我的回溯示例错误:

ERROR:   File "/home/user/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webelement.py", line 475, in send_keys
ERROR: value = self._upload(local_file)
ERROR: File "/home/user/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webelement.py", line 692, in _upload
ERROR: return self._execute(Command.UPLOAD_FILE, {'file': content})['value']
ERROR: File "/home/user/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webelement.py", line 628, in _execute
ERROR: return self._parent.execute(command, params)
ERROR: File "/home/user/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 312, in execute
ERROR: response = self.command_executor.execute(driver_command, params)
ERROR: File "/home/user/.local/lib/python3.6/site-packages/selenium/webdriver/remote/remote_connection.py", line 472, in execute
ERROR: resp = opener.open(request, timeout=self._timeout)
ERROR: File "/usr/lib/python3.6/urllib/request.py", line 526, in open
ERROR: response = self._open(req, data)
ERROR: File "/usr/lib/python3.6/urllib/request.py", line 544, in _open
ERROR: '_open', req)
ERROR: File "/usr/lib/python3.6/urllib/request.py", line 504, in _call_chain
ERROR: result = func(*args)
ERROR: File "/usr/lib/python3.6/urllib/request.py", line 1346, in http_open
ERROR: return self.do_open(http.client.HTTPConnection, req)
ERROR: File "/usr/lib/python3.6/urllib/request.py", line 1320, in do_open
ERROR: raise URLError(err)
ERROR: urllib.error.URLError: <urlopen error [Errno 32] Broken pipe>

请注意以下文件70mb size 上传成功,但是当我尝试上传更大的文件时失败。

我使用python 3.6 , selenium 3.12.0 , chromedriver 2.42Chrome 71 。我确实尝试了不同的 selenium、chromedriver 和 Chrome 版本,但遇到了相同的错误。

我怀疑有一些chromeoptions可以用来解决这个问题,但还没有找到到底有什么可以帮助我。

非常感谢您的帮助!

最佳答案

如果您使用Remote WebDriver,它尝试传输要上传到远程主机的文件(在您的情况下从 localhostlocalhost ;但是,一般逻辑是从运行测试的主机到运行浏览器的主机)。

当您上传大文件时,在上传整个文件之前,对等端的套接字会关闭。这就是为什么您会看到 urllib.error.URLError: <urlopen error [Errno 32] Broken pipe> .

解决方案:您需要通过指定UselessFileDetector来禁用文件传输。

remote = Remote(
command_executor="http://localhost:9515",
desired_capabilities=options.to_capabilities(),
file_detector=UselessFileDetector()
)

请注意,如果您的浏览器位置不是localhost ,在使用 Selenium 上传文件之前,您必须关心传输文件。

编辑:您可以在https://extsoft.pro/selenium-large-files-upload/上阅读有关Selenium如何上传文件的更多信息。

关于python - 通过远程网络驱动程序上传大文件时<Errno 32 Broken Pipe>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54113674/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com