RemoteDisconnected("Remote end closed connection without" http.client.RemoteDisconnected: 远程端关闭连接没有响应
问题描述
由于 Google 拒绝除已建立的公司之外的所有公司访问 Google MyBusiness 的 API 密钥,因此我尝试使用 selenium webdriver 自动化更改我的业务信息的过程.
Since Google denies access to API key of Google MyBusiness to all but established firms, I attempted to automate the process of changing my business information using selenium webdriver.
什么有效?
通过自动登录表单登录到 Google Mybusiness.
Logging in to Google Mybusiness by automating the login form.
什么不起作用?
登录后需要打开编辑工作时间的小模态.我试图自动单击编辑按钮,但不幸的是我收到了这个错误:http.client.RemoteDisconnected: Remote end closed connection without response
After logging in, I need to open the small modal of editing working hours. I attempted to automate a click on the edit button, but unfortunately I am getting this error: http.client.RemoteDisconnected: Remote end closed connection without response
我的代码:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
driver = webdriver.Chrome(chrome_options=options)
def LoginGMB(driver):
(myemail, mypassword) = AuthenticationDetails()
driver.find_element_by_id('identifierId').send_keys(myemail)
driver.find_element_by_id('identifierNext').click()
time.sleep(2)
driver.find_element_by_name('password').send_keys(mypassword)
driver.find_element_by_id('passwordNext').click()
time.sleep(2)
def OpenGMB(url):
driver.get(url)
print(driver.current_url)
pattern = re.compile(".*accounts.google.com/signin.*")
match = re.search(pattern, cururl)
if match:
LoginGMB(driver)
print("Ok we're back")
driver.find_element_by_id('ow50').click()
OpenGMB('https://business.google.com/edit/l/001?hl=en')
堆栈跟踪:
https://accounts.google.com/signin/v2/identifier?service=lbc&passive=1209600&continue
We need to login as we are presented login page
Ok we're back
Traceback (most recent call last):
File "/home/joel/.local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/home/joel/.local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 384, in _make_request
six.raise_from(e, None)
File "<string>", line 2, in raise_from
File "/home/joel/.local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 380, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.6/http/client.py", line 1331, in getresponse
response.begin()
File "/usr/lib/python3.6/http/client.py", line 297, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.6/http/client.py", line 266, in _read_status
raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "gmb.py", line 77, in <module>
OpenGMB(url)
File "gmb.py", line 62, in OpenGMB
el = driver.find_element_by_id('ow50')
File "/home/joel/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 360, in find_element_by_id
return self.find_element(by=By.ID, value=id_)
File "/home/joel/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 978, in find_element
'value': value})['value']
File "/home/joel/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 319, in execute
response = self.command_executor.execute(driver_command, params)
File "/home/joel/.local/lib/python3.6/site-packages/selenium/webdriver/remote/remote_connection.py", line 376, in execute
return self._request(command_info[0], url, body=data)
File "/home/joel/.local/lib/python3.6/site-packages/selenium/webdriver/remote/remote_connection.py", line 399, in _request
resp = self._conn.request(method, url, body=body, headers=headers)
File "/home/joel/.local/lib/python3.6/site-packages/urllib3/request.py", line 72, in request
**urlopen_kw)
File "/home/joel/.local/lib/python3.6/site-packages/urllib3/request.py", line 150, in request_encode_body
return self.urlopen(method, url, **extra_kw)
File "/home/joel/.local/lib/python3.6/site-packages/urllib3/poolmanager.py", line 323, in urlopen
response = conn.urlopen(method, u.request_uri, **kw)
File "/home/joel/.local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 638, in urlopen
_stacktrace=sys.exc_info()[2])
File "/home/joel/.local/lib/python3.6/site-packages/urllib3/util/retry.py", line 367, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/home/joel/.local/lib/python3.6/site-packages/urllib3/packages/six.py", line 685, in reraise
raise value.with_traceback(tb)
File "/home/joel/.local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/home/joel/.local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 384, in _make_request
six.raise_from(e, None)
File "<string>", line 2, in raise_from
File "/home/joel/.local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 380, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.6/http/client.py", line 1331, in getresponse
response.begin()
File "/usr/lib/python3.6/http/client.py", line 297, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.6/http/client.py", line 266, in _read_status
raise RemoteDisconnected("Remote end closed connection without"
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))
解决方案
这些错误信息...
RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response
和
RemoteDisconnected("Remote end closed connection without"
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))
...暗示 Remote Connection 由于 ProtocolError 而断开.
...implies that the Remote Connection was disconnected due to ProtocolError.
根据 urllib3.exceptions.ProtocolError: ('连接中止.', error(10054, '现有连接被远程主机强制关闭')) 当您使用的二进制文件版本之间存在不兼容时,此问题非常明显.
As per urllib3.exceptions.ProtocolError: ('Connection aborted.', error(10054, 'An existing connection was forcibly closed by the remote host')) This issue is pretty evident when there is a incompatibility between the version of the binaries you are using.
当您使用 ChromeDriver 和 Chrome 浏览器 时,您必须根据以下条目确保二进制文件兼容:
As you are using ChromeDriver and Chrome Browser you must ensure that the binaries are compatible as per the entries below:
- ChromeDriver v2.46:支持 Chrome v71-73
- ChromeDriver v2.45:支持 Chrome v70-72
- ChromeDriver v2.44:支持 Chrome v69-71(与 ChromeDriver 2.43 相同,但修复了其他错误)
- ChromeDriver v2.43:支持 Chrome v69-71
- ChromeDriver v2.42:支持 Chrome v68-70
- ChromeDriver v2.41:支持 Chrome v67-69
- ChromeDriver v2.40:支持 Chrome v66-68
- ChromeDriver v2.39:支持 Chrome v66-68
- ChromeDriver v2.38:支持 Chrome v65-67
- ChromeDriver v2.37:支持 Chrome v64-66
- ChromeDriver v2.36:支持 Chrome v63-65
- ChromeDriver v2.35:支持 Chrome v62-64
- ChromeDriver v2.34:支持 Chrome v61-63
- ChromeDriver v2.33:支持 Chrome v60-62
- ChromeDriver v2.32:支持 Chrome v59-61
- ChromeDriver v2.31:支持 Chrome v58-60
- ChromeDriver v2.30:支持 Chrome v58-60
- ChromeDriver v2.29:支持 Chrome v56-58li>
- ChromeDriver v2.28:支持 Chrome v55-57
- ChromeDriver v2.27:支持 Chrome v54-56
注意:几个月前,Chromium 团队做了一个 初步公告 ChromeDriver 的版本控制模型将发生变化.现在我们正在推进计划.具体来说,ChromeDriver 2.46 将是最后一个带有 2 主要版本的版本.未来的 ChromeDriver 版本将带有类似于 Chrome 版本的版本号.我们将在下周发布 ChromeDriver 73,在 Chrome 73 Beta 版之前发布.
Note: A few months ago, Chromium Team made a preliminary announcement that ChromeDriver's versioning model will be changing. Now we are moving forward with the plan. Specifically, ChromeDriver 2.46 will be the last release carrying the major version of 2. Future ChromeDriver releases will carry a version number similar to Chrome release. We will start with a release of ChromeDriver 73 next week, before the Beta release of Chrome 73.
以下是新发布模型的工作方式:
Here is how the new release model will work:
- ChromeDriver 将使用与 Chrome 相同的版本号方案.请参阅 https://www.chromium.org/developers/version-numbers 了解更多信息详情.
- ChromeDriver 的每个版本都将支持具有匹配的主要、次要和内部版本号的 Chrome.例如,即将推出的 ChromeDriver 73.0.3683.* 将支持以 73.0.3683 开头的所有 Chrome 版本.
- 在新的 Chrome 主要版本进入 Beta 版之前,将发布一个匹配的 ChromeDriver 版本.例如,下周将发布新版本的 ChromeDriver,以匹配 Chrome m73 的 Beta 版本.
- 在新的主要版本首次发布后,我们将根据需要发布补丁.这些补丁可能与 Chrome 的更新一致,也可能不一致.
相关文章