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

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

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

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

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

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

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
31 янв. 2025, в 16:39
10000 руб./за проект
31 янв. 2025, в 16:34
2000 руб./за проект