RemoteDisconnected(“无http.client的远端关闭连接.RemoteDisconnected:没有响应的远端关闭连接" [英] RemoteDisconnected("Remote end closed connection without" http.client.RemoteDisconnected: Remote end closed connection without response

查看:336
本文介绍了RemoteDisconnected(“无http.client的远端关闭连接.RemoteDisconnected:没有响应的远端关闭连接"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

由于Google拒绝除已成立公司之外的所有公司访问Google MyBusiness的API密钥,因此我尝试使用硒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')

Stacktrace:

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

...表示由于 ProtocolError (协议错误),远程连接已断开连接.

按照 urllib3.exceptions.ProtocolError:(' ',错误(10054,现有连接已被远程主机强行关闭"))当您使用的二进制版本之间存在不兼容时,此问题非常明显

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

  • 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-58
  • ChromeDriver v2.28:支持Chrome v55-57
  • ChromeDriver v2.27:支持Chrome v54-56

注意:几个月前, Chromium Team 制作了 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一致,也可能不一致.
  • 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.

    What works?

    Logging in to Google Mybusiness by automating the login form.

    What doesnt work?

    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

    My code:

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

    Stacktrace:

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

    解决方案

    These error messages...

        RemoteDisconnected("Remote end closed connection without"
    http.client.RemoteDisconnected: Remote end closed connection without response
    

    and

        RemoteDisconnected("Remote end closed connection without"
    urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))
    

    ...implies that the Remote Connection was disconnected due to ProtocolError.

    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.

    As you are using ChromeDriver and Chrome Browser you must ensure that the binaries are compatible as per the entries below:

    • ChromeDriver v2.46: Supports Chrome v71-73
    • ChromeDriver v2.45: Supports Chrome v70-72
    • ChromeDriver v2.44: Supports Chrome v69-71 (same as ChromeDriver 2.43, but with additional bug fixes)
    • ChromeDriver v2.43: Supports Chrome v69-71
    • ChromeDriver v2.42: Supports Chrome v68-70
    • ChromeDriver v2.41: Supports Chrome v67-69
    • ChromeDriver v2.40: Supports Chrome v66-68
    • ChromeDriver v2.39: Supports Chrome v66-68
    • ChromeDriver v2.38: Supports Chrome v65-67
    • ChromeDriver v2.37: Supports Chrome v64-66
    • ChromeDriver v2.36: Supports Chrome v63-65
    • ChromeDriver v2.35: Supports Chrome v62-64
    • ChromeDriver v2.34: Supports Chrome v61-63
    • ChromeDriver v2.33: Supports Chrome v60-62
    • ChromeDriver v2.32: Supports Chrome v59-61
    • ChromeDriver v2.31: Supports Chrome v58-60
    • ChromeDriver v2.30: Supports Chrome v58-60
    • ChromeDriver v2.29: Supports Chrome v56-58
    • ChromeDriver v2.28: Supports Chrome v55-57
    • ChromeDriver v2.27: Supports Chrome v54-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.

    Here is how the new release model will work:

    • ChromeDriver will be using the same version number scheme as Chrome. See https://www.chromium.org/developers/version-numbers for more details.
    • Each version of ChromeDriver will support Chrome with matching major, minor, and build version numbers. For example, upcoming ChromeDriver 73.0.3683.* will support all Chrome versions that start with 73.0.3683.
    • Before a new major version of Chrome goes to Beta, a matching version of ChromeDriver will be released. For example, a new version of ChromeDriver will be release next week to match the Beta release of Chrome m73.
    • After the initial release of a new major version, we will release patches as needed. These patches may or may not coincide with updates to Chrome.

    这篇关于RemoteDisconnected(“无http.client的远端关闭连接.RemoteDisconnected:没有响应的远端关闭连接"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆