Reputation: 31
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
Reputation: 966
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
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
Reputation: 4869
browser
(Firefox
instance) as you already has driver
(another Firefox
instance)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