Код Selenium работает локально, но не на сервере - PullRequest
1 голос
/ 05 августа 2020

И на сервере, и на моем компьютере установлены 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 ГБ оперативной памяти, поэтому он не умирает из-за недостатка памяти. Какие решения показаны в этом вопросе.

1 Ответ

0 голосов
/ 26 августа 2020

Для тех, кто столкнулся с этой проблемой, сервер обновил Firefox до версии 79.0, и теперь он работает без проблем. Насколько мне известно, больше ничего не изменилось.

Я предполагаю, что изменение версии исправило это, но я не знаю точно, как это сделать. Стоит попробовать, если кто-то еще испытывал то же самое, что и я, с разными ошибками в зависимости от того, как он был запущен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...