Python и Selenium WebDriver не вводит текст в правильное текстовое поле - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь написать инстаграм-бота с python и селеном, и мне не удается заставить бота войти в инстаграмм. Каждый раз, когда он пытается ввести имя пользователя и пароль для входа в систему, он вводит имя пользователя, затем go в поле пароля и вводит первые два или три символа, затем go назад и вводит остальные в поле имени пользователя.

gif, показывающий проблему

Я пробовал различные решения, и до сих пор единственным успешным способом было использование javascript для заполнения ящиков, но этот метод был очень неуклюже, и у меня возникла проблема с невозможностью нажатия кнопки «Войти», поэтому, если я смогу заставить этот метод работать, я буду очень счастлив.

Вот мой код:

#!/usr/bin/env/python3

import time
from selenium import webdriver


class InstaBot:
    def __init__(self, username, passwd):
        self.username = username
        self.passwd = passwd
        self.driver = webdriver.Safari(executable_path="/usr/bin/safaridriver")
        self.driver.get("https://instagram.com")    # load instagram login
        time.sleep(2)
        self.driver.find_element_by_xpath("//input[@name=\"username\"]").send_keys(username)
        self.driver.find_element_by_xpath("//input[@name=\"password\"]").send_keys(passwd)
        # self.driver.find_element_by_xpath('//button[@type="submit"]').click()
        time.sleep(2)
        self.driver.quit()    # close browser window


InstaBot("username", "P4$$w0rd")

Заранее благодарим за любую помощь!

1 Ответ

0 голосов
/ 08 мая 2020

Хорошо, я просто попытался загрузить и использовать вместо него Firefox, и, похоже, это сработало. Я могу ввести имя пользователя и пароль в правильные текстовые поля, и теперь он нажимает кнопку входа без ошибок, поэтому я предполагаю, что с использованием сафари что-то происходило. Не знаю почему, но теперь это работает. Так что, если кто-то еще видит эту ветку и сталкивается с этой проблемой, попробуйте другой браузер, поскольку, похоже, это сработало для меня.

...