bebe
bebe

Reputation: 31

Trying to make a bot to connect on discord with Selenium Python

Trying to make a bot to connect on discord with Selenium Python: I've been trying to make a bot to connect to my discord.

Imports needed are listed below:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

The following code is my script - defining DiscordBot:

class DiscordBot:

def __init__(self, email, password):
    self.email = email
    self.password = password
    self.driver = webdriver.Firefox()

def closeBrowser(self):
    self.driver.close()      

def login(self):
    driver = self.driver
    driver.get("https://discordapp.com/login")
    browser = webdriver.Firefox()
    email = browser.find_element("register-email")
    email.send_keys("[email protected]")
    password = browser.find_element("register-password")
    password.send_keys("my password")
    browser.find_element_by_name("login").click()
    time.sleep(2)

However, my problem it when the above code runs, it produces the following error:

raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidArgumentException: 
Message: unknown variant `register-email`, expected one of `css selector`, `link text`,
`partial link text`, `tag name`, `xpath` at line 1 column 26

Upvotes: 2

Views: 8444

Answers (3)

Khan Saad
Khan Saad

Reputation: 966

Selenium Discord Login with Python:

I Tried all the above code and It was not working for me so after some hustle, Here is the Discord Selenium Python Automation Code.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select

driver = webdriver.Chrome()

driver.get("https://discord.com/login")
time.sleep(6)

username_input = driver.find_element_by_name('email')
username_input.send_keys("enter-your-username-here")


password_input = driver.find_element_by_name('password')
password_input.send_keys("Enter-your-password-here")


login_button = driver.find_element_by_xpath('//*[@id="app-mount"]/div[2]/div/div[2]/div/div/form/div/div/div[1]/div[3]/button[2]')
login_button.click()

Upvotes: 3

QHarr
QHarr

Reputation: 84465

I would use CSS attribute = value selectors to target the required elements.

email = driver.find_element_by_css_selector("[type=email]")
password = driver.find_element_by_css_selector("[type=password]")
driver.find_element_by_css_selector("[type=submit]").click()

Upvotes: 1

JaSON
JaSON

Reputation: 4869

  1. You don't need to define browser (Firefox instance) as you already has driver (another Firefox instance)
  2. You need to pass type of selector as first argument to find_element, e.g.

    email = driver.find_element("name", "register-email")
    email = driver.find_element(value="register-email") # if your selector type is "id" (default type)
    

Upvotes: 0

Related Questions