由于Google拒绝除已成立公司之外的所有公司访问Google MyBusiness的API密钥,因此我尝试使用seleniumwebdriver自动执行更改我的业务信息的过程。
什么有效?
通过自动执行登录表单登录到Google Mybusiness。
什么不起作用?
登录后,我需要打开编辑工作时间的小模式。我试图自动单击“编辑”按钮,但不幸的是,出现此错误:http.client.RemoteDisconnected: Remote end closed connection without response
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',))
…表示由于 ProtocolError* 导致 远程连接 已断开。 *
根据urllib3.exceptions.ProtocolError:(’Connection aborted。’,error(10054,’现有的连接被远程主机强行关闭’)))当您的二进制版本之间 不兼容 时,此问题非常明显正在使用。
在使用 ChromeDriver 和 Chrome浏览器时 ,必须确保二进制文件与以下条目兼容:
注意 :几个月前, Chromium小组 宣布了ChromeDriver的版本控制模型将发生变化的初步声明。现在我们正在推进该计划。具体来说,ChromeDriver 2.46将是包含主要版本2的最新版本。未来的ChromeDriver版本将具有与Chrome版本类似的版本号。我们将从下周的ChromeDriver 73版本开始,而不是Beta版本的Chrome 73。
这是新发行模型的工作方式: