Почему он не посылает send_keys в поле для комментариев? - PullRequest
1 голос
/ 07 мая 2019

Я занят созданием бота в Instagram, который автоматически комментирует записи в моем фиде в Instagram.Проблема в том, что когда я пытаюсь отправить send_keys в поле для комментариев, это не работает.Я настроил экран входа в систему для отправки ключей, и он отлично работает, но почему этот шаг не работает?

Это мой код:

def send_comment(self):


    self.browser.get('https://www.instagram.com/')
    actionChain = webdriver.ActionChains(self.browser)

    comment = self.browser.find_elements_by_css_selector('form input')[0]

    comment.send_keys("Great")
    comment.send_keys(Keys.ENTER)
    print('sent comment')

Это ошибка, которая появляется: selenium.common.exceptions.WebDriverException: Message: invalid argument: File not found : Great Итак, я подумал, что, вероятно, ищет путь к файлу.Я создал текстовый документ, содержащий комментарий, который я хотел бы представить, заключенный в круглые скобки (стандартный формат Python).В этом формате: comment.send_keys("C:/Users/bbrown/Desktop/comment_doc.txt")

Однако теперь возникает другая ошибка: selenium.common.exceptions.WebDriverException: Message: invalid argument: , и в веб-браузере с открытым Instagram выдает сообщение при попытке запустить эту часть кода.Msgstr "Загрузка не удалась. Только изображения могут быть загружены."Поэтому я не верю, что это правильный формат.Куда я иду не так?Любая помощь будет потрясающей !!

1 Ответ

0 голосов
/ 26 июня 2019

При работе с Selenium нужно помнить о некоторых вещах, таких как ожидание в течение некоторого времени. Код Selenium будет выполняться очень быстро, но когда вам нужно будет найти веб-страницу на элементе, это будет зависеть от скорости интернета и вашего аппаратного обеспечения. Чтобы избежать ошибок «Нет такого элемента», вы должны включить sleep() или Команда wait, пока какой-либо элемент не станет видимым. Я предпочитаю использовать time.sleep(time_amount_in_sec). и если вы говорите о разделе комментариев, просто обязательно нажмите на него, прежде чем начать отправку ключей, чтобы избежать ошибок. Очень похожий бот описан здесь .

Фрагмент кода:

def comment(i):
    list1=["niceeee ","aweeesome ","supeeerr ","cooool "]
    list2=[":)", ";)",":o"]

    p=random.randint(0,3)
    q=random.randint(0,2)

    paste=list1[p]+list2[q]

    a=br.find_element_by_class_name('_b6i0l').click()
    time.sleep(1.85)
    b=br.find_element_by_xpath("//*[@class='_bilrf']")
    b.send_keys(paste)
    b.send_keys(Keys.ENTER)
    time.sleep(2)
    with open('commented.txt','a') as f:
        x=str(i)
        f.write('%s\n'%x)

    return()

Надеюсь, это будет полезно.

ПРИМЕЧАНИЕ - Это старый, поэтому попробуйте изменить классы соответствующим образом, так как они очень часто меняют классы веб-сайта.

...