Задать вопрос
@1sviat1

Что делать если выбивает ошибку при запуски скрипта python на vps?

Всем доброго времени суток. Пытаюсь я сейчас запустить скрипт который использует selenium на vps сервере. Установил все необходимые пакеты. Но при запуски скрипта вылазит следующая ошибка
====== WebDriver manager ======
Current google-chrome version is 98.0.4758
Get LATEST chromedriver version for 98.0.4758 google-chrome
Trying to download new driver from https://chromedriver.storage.googleapis.com/98.0.4758.102/chromedriver_linux64.zip
Driver has been saved in cache [/root/.wdm/drivers/chromedriver/linux64/98.0.4758.102]
Traceback (most recent call last):
  File "boteditpriceserver.py", line 12, in <module>
    driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
  File "/home/bot/venvBOT/lib/python3.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 73, in __init__
    service_log_path, service, keep_alive)
  File "/home/bot/venvBOT/lib/python3.7/site-packages/selenium/webdriver/chromium/webdriver.py", line 99, in __init__
    options=options)
  File "/home/bot/venvBOT/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 268, in __init__
    self.start_session(capabilities, browser_profile)
  File "/home/bot/venvBOT/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 359, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/home/bot/venvBOT/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 424, in execute
    self.error_handler.check_response(response)
  File "/home/bot/venvBOT/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 247, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed.
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
Stacktrace:
#0 0x55fb4cf01b33 <unknown>
#1 0x55fb4c9ca6d8 <unknown>
#2 0x55fb4c9ed84c <unknown>
#3 0x55fb4c9e8fca <unknown>
#4 0x55fb4ca23e0a <unknown>
#5 0x55fb4ca1df53 <unknown>
#6 0x55fb4c9f3a0a <unknown>
#7 0x55fb4c9f4ad5 <unknown>
#8 0x55fb4cf332fd <unknown>
#9 0x55fb4cf4c4bb <unknown>
#10 0x55fb4cf350d5 <unknown>
#11 0x55fb4cf4d145 <unknown>
#12 0x55fb4cf28aaf <unknown>
#13 0x55fb4cf69ba8 <unknown>
#14 0x55fb4cf69d28 <unknown>
#15 0x55fb4cf8448d <unknown>
#16 0x7f4a588e8fa3 <unknown>

Вот код скрипта

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time


options = webdriver.ChromeOptions()
options.add_argument("--no-sandbox")
# импортируем вебдрайвер
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
# заходим на страницу авторизации
driver.maximize_window()
driver.get("")


# авторизация
def login():
    login_input = driver.find_element(By.ID, "user_login")
    login_input.clear()
    login_input.send_keys("")
    password_input = driver.find_element(By.ID, "user_pass")
    password_input.clear()
    password_input.send_keys("")
    time.sleep(3)
    driver.find_element(By.ID, "wp-submit").click()


def product1():
    driver.get("")  # ссылка на товар ИЗ АДМИНКИ (заходите на товар что бы изменить и копируете от туда ссылку) !
    price = driver.find_element(By.ID, "_regular_price")  # поиск инпута цены
    price.clear()  # чистим инпут
    price.send_keys("")  # ВВОДИМ НОВУЮ ЦЕНУ
    driver.find_element(By.CLASS_NAME, "shipping_options.shipping_tab.hide_if_virtual.hide_if_grouped.hide_if_external").click()  # находим вкалдку доставка и заходим на нее
    select = Select(driver.find_element(By.ID, "product_shipping_class"))
    select.select_by_visible_text('')  # выбераем тип доставки
    # driver.find_element(By.CLASS_NAME, "product-label_options.product-label_tab").click()
    # driver.find_element(By.ID, "_action_label").click() # если есть акция то вставляеете эту срочку, если нет, то удаляеете
    driver.execute_script("window.scrollTo(0, 100)")
    time.sleep(30)
    driver.find_element(By.XPATH, "//input[@type='submit' and @value='Обновить']").click()
    time.sleep(5)


def product2():
    driver.get("")  # ссылка на товар ИЗ АДМИНКИ (заходите на товар что бы изменить и копируете от туда ссылку) !
    price = driver.find_element(By.ID, "_regular_price")  # поиск инпута цены
    price.clear()  # чистим инпут
    price.send_keys("")  # ВВОДИМ НОВУЮ ЦЕНУ
    driver.find_element(By.CLASS_NAME, "shipping_options.shipping_tab.hide_if_virtual.hide_if_grouped.hide_if_external").click()  # находим вкалдку доставка и заходим на нее
    select = Select(driver.find_element(By.ID, "product_shipping_class"))
    select.select_by_visible_text('')  # выбераем тип доставки
    driver.find_element(By.CLASS_NAME, "product-label_options.product-label_tab").click()
    driver.find_element(By.ID, "_action_label").click() # если есть акция то вставляеете эту срочку, если нет, то удаляеете
    driver.find_element(By.ID, "publish").click()
    time.sleep(5)


def product3():
    driver.get("")  # ссылка на товар ИЗ АДМИНКИ (заходите на товар что бы изменить и копируете от туда ссылку) !
    price = driver.find_element(By.ID, "_regular_price")  # поиск инпута цены
    price.clear()  # чистим инпут
    price.send_keys("")  # ВВОДИМ НОВУЮ ЦЕНУ
    driver.find_element(By.CLASS_NAME, "shipping_options.shipping_tab.hide_if_virtual.hide_if_grouped.hide_if_external").click()  # находим вкалдку доставка и заходим на нее
    select = Select(driver.find_element(By.ID, "product_shipping_class"))
    select.select_by_visible_text('')  # выбераем тип доставки
    driver.find_element(By.CLASS_NAME, "product-label_options.product-label_tab").click()
    driver.find_element(By.ID, "_action_label").click() # если есть акция то вставляеете эту срочку, если нет, то удаляеете
    driver.find_element(By.ID, "publish").click()
    time.sleep(5)

login()
# вызваем функцию которая меняет цену, доставку и метку товара
product1()
product2()
product3()


Возможно кто-то знает как решить эту проблему или сталкивался с подобной ? За ранее благодарю
  • Вопрос задан
  • 386 просмотров
Подписаться 1 Простой 8 комментариев
Пригласить эксперта
Ответы на вопрос 2
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
На vps есть gui? Если нет, то попробуйте добавить аргумент options.add_argument("--headless")

Перед этим рекомендую отладить скрипт на локальной машине, так как в безголовом режиме скрипт может не найти элементы.
Ответ написан
Комментировать
@Bogal2006
Если на VPS нет графического интерфейса GUI добавляйте аргумент options.add_argument("--headless=new")
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы