RemoteDisconnected(“Remote end closed connection without”http.client.RemoteDisconnected:Remote end closed connection without respons

2024-04-27 09:01:03 发布

您现在位置:Python中文网/ 问答频道 /正文

由于Google拒绝所有公司访问Google my business的API密钥,所以我尝试使用selenium webdriver自动更改我的业务信息。

什么有效?

通过自动登录表单登录到Google Mybusiness。

什么不起作用?

登录后,我需要打开编辑工作时间的小模式。我试图自动单击“编辑”按钮,但不幸的是,出现了以下错误: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',))

Tags: inpyhomeresponserequestlibpackageslocal
1条回答
网友
1楼 · 发布于 2024-04-27 09:01:03

这些错误消息。。。

    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',))

…表示远程连接因ProtocolError而断开。

根据urllib3.exceptions.ProtocolError: ('Connection aborted.', error(10054, 'An existing connection was forcibly closed by the remote host'))的说法,当您使用的二进制文件版本之间存在不兼容时,这个问题非常明显。

在使用ChromeDriver和Chrome浏览器时,必须按照以下条目确保二进制文件兼容:

  • ChromeDriver v2.46:支持Chrome v71-73
  • ChromeDriver v2.45:支持Chrome v70-72
  • ChromeDriver v2.44:支持ChromeV69-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:支持ChromeV65-67
  • ChromeDriver v2.37:支持Chrome v64-66
  • ChromeDrive v2.36:支持Chrome v63-65
  • ChromeDriver v2.35:支持Chrome v62-64
  • ChromeDriver v2.34:支持Chrome v61-63
  • ChromeDrive v2.33:支持Chrome v60-62
  • ChromeDriver v2.32:支持Chrome v59-61
  • ChromeDriver v2.31:支持Chrome v58-60
  • ChromeDriver v2.30:支持ChromeV58-60
  • ChromeDriver v2.29:支持Chrome v56-58
  • ChromeDriver v2.28:支持ChromeV55-57
  • ChromeDriver v2.27:支持ChromeV54-56

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.

以下是新版本模型的工作原理:

  • 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的更新一致,也可能不一致。

相关问题 更多 >