Я использую Python 3.7.6, Chrome 80.0.3987.122, chromedriver 80.0.3987.106 и Selenium 4.0.0a3 на Linux Mint 19.3 и удаленный сервер Ubuntu 18.04.4 LTS.
В то время как на моем local Mint все работает совершенно нормально. Я не могу запустить приложение на удаленной Ubuntu
. В определенный момент в моем приложении я запускаю driver.get (), и драйвер, похоже, зависает. Я попытался заставить драйвер вызвать TimeoutException следующим образом:
driver.set_page_loadtimeout(15)
и
driver.implicitly_wait(15)
, а затем остановить загрузку с помощью сценария js, но оба раза TimeoutException не выбрасывается мне нужно использовать ctrl + c прерывание клавиатуры, чтобы остановить приложение.
Вот пример кода моей реализации:
class Parser():
def __init__(self, words, login_credentials):
option = Options()
option.add_argument("--disable-infobars")
option.add_argument("start-maximized")
option.add_argument("--disable-extensions")
option.add_argument("--headless")
option.add_experimental_option(
"prefs", {"profile.default_content_setting_values.notifications": 2}
)
self.driver = webdriver.Chrome(
options=option, executable_path='/usr/bin/chromedriver'
)
self.driver.set_page_load_timeout(20)
def redirect(self, link):
try:
self.driver.get(link)
except TimeoutException:
print("Would stop loading page here")
if __name__ == '__main__':
parser = Parser()
links = [<List of urls>]
for link in links:
parser.redirect(link)
А вот трассировка после прерывания:
self.driver.get(link)
File "/home/ubuntu/.local/share/virtualenvs/Linux-scraper-Zulc4Pj0/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 330, in get
self.execute(Command.GET, {'url': url})
File "/home/ubuntu/.local/share/virtualenvs/Linux-scraper-Zulc4Pj0/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 316, in execute
response = self.command_executor.execute(driver_command, params)
File "/home/ubuntu/.local/share/virtualenvs/Linux-scraper-Zulc4Pj0/lib/python3.6/site-packages/selenium/webdriver/remote/remote_connection.py", line 347, in execute
return self._request(command_info[0], url, body=data)
File "/home/ubuntu/.local/share/virtualenvs/Linux-scraper-Zulc4Pj0/lib/python3.6/site-packages/selenium/webdriver/remote/remote_connection.py", line 370, in _request
resp = self._conn.request(method, url, body=body, headers=headers)
File "/home/ubuntu/.local/share/virtualenvs/Linux-scraper-Zulc4Pj0/lib/python3.6/site-packages/urllib3/request.py", line 80, in request
method, url, fields=fields, headers=headers, **urlopen_kw
File "/home/ubuntu/.local/share/virtualenvs/Linux-scraper-Zulc4Pj0/lib/python3.6/site-packages/urllib3/request.py", line 171, in request_encode_body
return self.urlopen(method, url, **extra_kw)
File "/home/ubuntu/.local/share/virtualenvs/Linux-scraper-Zulc4Pj0/lib/python3.6/site-packages/urllib3/poolmanager.py", line 330, in urlopen
response = conn.urlopen(method, u.request_uri, **kw)
File "/home/ubuntu/.local/share/virtualenvs/Linux-scraper-Zulc4Pj0/lib/python3.6/site-packages/urllib3/connectionpool.py", line 672, in urlopen
chunked=chunked,
File "/home/ubuntu/.local/share/virtualenvs/Linux-scraper-Zulc4Pj0/lib/python3.6/site-packages/urllib3/connectionpool.py", line 421, in _make_request
six.raise_from(e, None)
File "<string>", line 3, in raise_from
File "/home/ubuntu/.local/share/virtualenvs/Linux-scraper-Zulc4Pj0/lib/python3.6/site-packages/urllib3/connectionpool.py", line 416, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.6/http/client.py", line 1346, in getresponse
response.begin()
File "/usr/lib/python3.6/http/client.py", line 307, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.6/http/client.py", line 268, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.6/socket.py", line 586, in readinto
return self._sock.recv_into(b)
KeyboardInterrupt
Может ли кто-нибудь помочь решить проблему зависания драйвера?
Редактировать: Я хотел добавить немного странную вещь, что через несколько дней go скрипт работал нормально, но с время, когда эти «зависания» начали происходить без конкретных c изменений в коде, и теперь даже первое перенаправление зависает.