И на сервере, и на моем компьютере установлены geckodriver 0.26.0, Firefox 71 и Selenium 3.141.0.
На моем компьютере установлена MacOS Mojave с python 3.8, а на сервере - CentOS 7 с python 3,7. Код отлично работает на моем компьютере, но возвращает ошибки на сервере.
Я не помню, как, но я получал разные ошибки в зависимости от того, добавляю ли я к нему точки останова или запускаю его в терминале или отправьте задание в SLURM.
На терминале:
File "Main.py", line 230, in <module>
main()
File "Main.py", line 179, in main
dfs=get_data(stations, inidate, findate)
File "Main.py", line 113, in get_data
list_files=return_list_day(date)
File "Main.py", line 66, in return_list_day
driver.get(webdir)
File "/home/user/.local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 333, in get
self.execute(Command.GET, {'url': url})
File "/home/user/.local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/home/user/.local/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Failed to decode response from marionette
или
Отправлено в SLURM (и чаще всего ошибка):
Traceback (most recent call last):
File "Main.py", line 230, in <module>
main()
File "Main.py", line 179, in main
dfs=get_data(stations, inidate, findate)
File "Main.py", line 113, in get_data
list_files=return_list_day(date)
File "Main.py", line 66, in return_list_day
driver.get(webdir)
File "/home/user/.local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 333, in get
self.execute(Command.GET, {'url': url})
File "/home/user/.local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/home/user/.local/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: Timeout loading page after 300000ms
Я могу без проблем использовать Selenium в другом несвязанном коде, который завершается отлично. Поэтому я не понимаю, почему Selenium здесь и откуда он взялся.
Здесь не работает код:
## Commented parts are cuz I tried running with the MOZ_HEADLESS tag on terminal
## Didnt make a difference as far as I could tell.
#options = Options()
#options.headless = True
driver = webdriver.Firefox()#options=options)
driver.get(webdir) ##<-- HERE
## Added these because of other replies to this issue I found
driver.implicitly_wait(7)
time.sleep(3)
.
.
.
driver.close()
Этот фрагмент кода извлекает список с веб-страницы и выполняется внутри for
-l oop. Ошибка не в извлекающей части, а в driver.get(webdir)
. Я не могу поделиться сайтом, потому что это буквально похоже на просмотр сервера партнерского учреждения. webdir
- это каталог, и я в основном жду, пока его содержимое загрузится, чтобы получить имена его файлов.
Я знаю, что вы не можете сильно помочь без веб-сайта, но сделайте те ошибки, которые я показал указать, в чем может быть проблема? Может ли получение определенного c веб-сайта вести себя по-разному в зависимости от ОС? Я погуглил ошибки, нашел здесь вопросы, прочитал их и применил их, чтобы увидеть, как это изменилось, но ничего не изменилось или я получил другую ошибку (одну из двух выше).
Я нашел this , в котором говорится о несовместимости gecko и Mozilla, но поскольку я могу успешно запустить другой (несвязанный) код с точным вызовом и использованием Selenium (указан только другой URL-адрес), я не думаю, что это моя проблема.
Спасибо за любую помощь! Дайте мне знать, какая еще информация, которую я мог бы дать, может помочь.
Изменить:
Это не то же самое, что вопрос, на который была ссылка, так как я дал ему время сна и не сделал изменить что-нибудь. Ему выделено 40 ГБ оперативной памяти, поэтому он не умирает из-за недостатка памяти. Какие решения показаны в этом вопросе.