Задать вопрос
@danyayok

Ошибка при нажатии кнопки «Next», (Instagram, Selenium) Как исправить?

Пытаюсь сделать пост в инсте используя селениум, но при попытке нажатия кнопки Next (фото вставляется нормально) на сайте показывает ошибку: "Something went wrong. Try again" (Как "хостинг" использую google colab) Код:

def post_inst(message, usrname, file_path):
  driver.get("https://www.instagram.com/")
  load_cookies(driver, "cookies_inst.pkl")
  driver.refresh()
  time.sleep(5)
  # Проверяем, выполнен ли вход
  if "login" in driver.current_url:
    raise Exception("Не выполнен вход в аккаунт Instagram")
  # Нажимаем на кнопку "Создать пост"
  post_button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "(//div[@class='x1n2onr6'])[9]")))
  post_button.click()
  # Загружаем изображение
  time.sleep(10)
  file_input = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "._ac69")))
  file_input.send_keys(file_path)
  time.sleep(5)
  print(1)
  # Переходим к следующему шагу
  # next_button = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.xjyslct")))
  time.sleep(10)
  driver.save_screenshot("picture.png")
  next_button = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, "div.xjyslct")))
  next_button.click()
  time.sleep(10)
  driver.save_screenshot("next.png")
  print(2)
  # Нажимаем "Next" второй раз
  next_button = WebDriverWait(driver, 200).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.xjyslct")))
  time.sleep(2)
  next_button.click()
  driver.save_screenshot("next2.png")
  print(3)
  # Вводим текст
  text_input = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[contains(@aria-label, 'Write a caption...')]")))
  for char in message:
    text_input.send_keys(char)
    time.sleep(0.05)
  driver.save_screenshot("text.png")
  print(4)
  # Публикуем пост
  share_btn = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//div[text()='Share' and @role='button']")))
  share_btn.click()
  time.sleep(10)
  driver.save_screenshot("posted.png")
  print("Пост успешно опубликован!")
  # получаем ссылку на пост
  driver.get(f"https://www.instagram.com/{usrname}/")
  time.sleep(5)
  post = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div._ac7v:nth-child(1) > div:nth-child(1) > a:nth-child(1)")))
  post.click()
  time.sleep(3)
  return driver.current_url


Кнопка нажимается!!! Но на сайте выводит ошибку. В пайчарме на своём пк работает, в самом коллабе нет. Может опознаёт Selenium?
  • Вопрос задан
  • 103 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
Lord_of_Rings
@Lord_of_Rings Куратор тега Python
Дунадан - северный странник. Злой, но очень добрый
Дебаг, дебаг и ещё раз дебаг
Ответ написан
Комментировать
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Разделите эту огромную простыню на небольшие функции, которые будут каждая делать только одно. Признак, по которому можно делить - «и». Если функция делает то и это, выделяем функции «делать то» и «делать это».
Основная функция вызывает остальные в нужном порядке.
Так отладить всё это будет значительно проще.

Кстати, модный deekpeek прекрасно умеет порезать такую портянку кода на ленточки, пробуйте.
Ответ написан
Ваш ответ на вопрос

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

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