Невозможно создавать комментарии, автоматизация Python, tkinter

#python #tkinter #bots

#python #tkinter #боты

Вопрос:

По сути, я создаю бота с целью обучения, то, что я пытаюсь сделать, это добавить запятые с комментариями, чтобы добавлять комментарии, но это не работает, если пользователь добавляет в поле для комментариев что-то вроде привет, «потрясающе», «круто», затем бот комментирует случайные слова, такие как «h», «y»,»I, в основном это рандомизация первого символа,

Вот коды

 def comment(driver, comment_custom,hashtags,count):

url = "https://www.instagram.com/explore/tags/"  hashtags
driver.get(url)

wait = WebDriverWait(driver,10)
path = "/html/body/div[1]/section/main/article/div[1]/div/div/div[1]/div[1]/a/div/div[2]"
first_photo = wait.until(EC.presence_of_element_located((By.XPATH,path)))
first_photo.click()

time.sleep(1)

next_button1st = driver.find_element_by_xpath("/html/body/div[6]/div[1]/div/div/div/button")
next_button1st.click()   
time.sleep(1)


for i in range (int(count)):
    #comments on photo
    path = "/html/body/div[6]/div[2]/div/article/div/div[2]/div/div/div[2]/section[3]/div/form/textarea"
    comment = wait.until(EC.presence_of_element_located((By.CLASS_NAME,"Ypffh")))
    comment.click()
    time.sleep(1)
    commet_text = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "Ypffh")))
    comment = comment_custom[randint(0, len(comment_custom)-1)]
    commet_text.send_keys(comment)
    
    #post comment button
    post_button = wait.until(
        EC.element_to_be_clickable((By.XPATH, "//button[contains(.,'Post')]")))
    post_button.click()
    time.sleep(1)

    next_button2st = wait.until(EC.presence_of_element_located((By.XPATH,"/html/body/div[6]/div[1]/div/div/div[2]/button")))
    next_button2st.click()
 

и это код tkinter

 Comments_with_hash = Button(root, text="Comments_with_hashtags", height=1, width = 30,
command=lambda:comment(driver,comments.get(),hashtag.get(),likecount.get()))
Comments_with_hash.grid(padx=5,pady=5)
 

А вот фотография бота
https://prnt.sc/21k1nsr.png

Ожидаемые комментарии, которые я хочу

 Nice and then Amazing and then amazing and nice basically in random 
 

ОТРЕДАКТИРОВАНО
Не удается рандомизировать время ожидания
в основном то, что я хочу сделать, это ввести пользователем 2 числа, например 1,5, чтобы рандомизировать время между каждой операцией.
Изображение бота:https
://prnt.sc/21nj6xm коды, которые я использую

 time.sleep(randint(int(delay)))
 

Ошибка

     time.sleep(randint(int((delay))))
    ValueError: invalid literal for int() with base 10: '1,5'
 

Комментарии:

1. что такое comment_custom ? Если это строка, то с помощью comment_custom[value] вы получаете один символ из строки. И это может быть вашей проблемой. Это должен быть список строк. Кстати: короче random.choice(list_of_strings) . ЕСЛИ у вас есть строка с запятыми, вы должны использовать text.split(",") для создания списка со строками, а затем вы можете использовать случайную строку из этого списка.

2. кажется, вы используете string "1, 5" , но вам нужно использовать два целых randint(1, 5) числа, или вам нужно разделить текст "1,5" на две строки values = delay.split(",") , а затем преобразовать каждое значение отдельно randint( int(values[0]), int(values[1]) )

3. я попробовал ваш код, это то, что я добавил в свой код, где я хотел добавить sleep ——> values = delay.split(«,») randint( int(значения [0]), int(значения[1]) ) <—- и вполе задержки я добавляю 5,2, затем я получаю эту ошибку «Ошибка значения: пустой диапазон для случайного диапазона() (5, 3, -2)»

4. отображается ошибка randrange() (5, 3, -2) , но она должна быть randrange( 5, 3, -2 ) . Кажется, вы используете его не в том месте. Вы неправильно ( )

5. prnt.sc/21vckq3 взгляните, я думаю, код не находится в неправильном месте

Ответ №1:

Я не могу убежать, но я думаю:

comment_custom является одинарной строкой, поэтому, используя index comment_custom[index] , вы получаете один символ из string.

 comment_custom = "hey,amazing,cool"

print( comment_custom[0] ) # char `h`
 

Вы должны преобразовать его в список строк / слов, а затем выбрать слово из списка

 comment_custom = "hey,amazing,cool"

words = comment_custom.split(',')

print( words[0] ) # string `hey`
 

Вы могли бы использовать random.choice(words) вместо words[random.randint(0, len(words)-1)]


Итак, вы должны сделать

 words = comment_custom.split(',')

comment = random.choice(words)

commet_text.send_keys(comment)
 

Комментарии:

1. слова = comment_custom.split(‘,’) <Это сделало свое дело, спасибо, брат

2. Я тоже пытаюсь рандомизировать функцию time.sleep , но я не могу заставить ее работать, пожалуйста, проверьте отредактированный код выше. Спасибо