Я использую:
- Python 3.8
- Selenium 3.141.0
- Windows 10 (за прокси)
- Chrome: 84.0.4147.105
- Chromedriver: 84.0.4147.30
- Ma c 10.15.6 (не имеет прокси)
Здесь это мой код:
from selenium import webdriver
driver = webdriver.Chrome("D:/webdriver/chromedriver.exe")
driver.get("https://github.com")
driver.quit()
При выполнении driver.quit()
возникает исключение:
Traceback (most recent call last):
File "C:/Users/taiping/Desktop/data_test/selenium_test.py", line 5, in <module>
driver.quit()
File "D:\python3.8\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 158, in quit
self.service.stop()
File "D:\python3.8\lib\site-packages\selenium\webdriver\common\service.py", line 151, in stop
self.send_remote_shutdown_command()
File "D:\python3.8\lib\site-packages\selenium\webdriver\common\service.py", line 127, in send_remote_shutdown_command
url_request.urlopen("%s/shutdown" % self.service_url)
File "D:\python3.8\lib\urllib\request.py", line 222, in urlopen
return opener.open(url, data, timeout)
File "D:\python3.8\lib\urllib\request.py", line 525, in open
response = self._open(req, data)
File "D:\python3.8\lib\urllib\request.py", line 542, in _open
result = self._call_chain(self.handle_open, protocol, protocol +
File "D:\python3.8\lib\urllib\request.py", line 502, in _call_chain
result = func(*args)
File "D:\python3.8\lib\urllib\request.py", line 1379, in http_open
return self.do_open(http.client.HTTPConnection, req)
File "D:\python3.8\lib\urllib\request.py", line 1354, in do_open
r = h.getresponse()
File "D:\python3.8\lib\http\client.py", line 1332, in getresponse
response.begin()
File "D:\python3.8\lib\http\client.py", line 303, in begin
version, status, reason = self._read_status()
File "D:\python3.8\lib\http\client.py", line 272, in _read_status
raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response
Но этот код не содержит ошибок на моем Macbook. В чем проблема?
Обновлено: 2020-08-05
Я открываю отладчик и обнаруживаю, что для каждого объекта HTTPConnection
установлен общесистемный http-прокси. Но я не устанавливал никаких параметров в своем коде. И метод driver.quit
отправит http://localhost: 59717 / shutdown на chrome для выполнения выхода. Поэтому я предполагаю, что URL-адрес выключения фактически отправляется на прокси-сервер, а не в локальный браузер.
И я пытаюсь использовать скрипач для проверки информации о запросе. Есть еще одна проблема, что я не могу декодировать запросы https из-за некоторых конфигураций сертификатов. Поэтому я меняю аргумент driver.get()
на внутренний веб-адрес моей компании. Результат: Если я закрою скрипач, снова возникнет ошибка RemoteDisconnected
. А если открыть скрипач, все работает.
Что случилось? Я знаю, что скрипач установил прокси-сервер на 127.0.0.1:8888, поэтому я думаю, что что-то не так с настройками прокси. Но исправить не могу. Я предполагаю, что chrome использует системный прокси, чтобы домашняя страница github могла открываться правильно, но при отправке URL-адреса выключения на chrome объект запроса не должен использовать системный прокси, но это так.
Am Я прав? И как исправить эту проблему?