试图让一个机器人与 Selenium Python 建立不和谐的连接
Posted
技术标签:
【中文标题】试图让一个机器人与 Selenium Python 建立不和谐的连接【英文标题】:Trying to make a bot to connect on discord with Selenium Python 【发布时间】:2019-05-06 10:29:47 【问题描述】:尝试用 Selenium Python 制作一个机器人来连接 Discord:我一直在尝试制作一个机器人来连接我的 Discord。
需要的进口如下:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
以下代码是我的脚本 - 定义 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("discordbot@icloud.com")
password = browser.find_element("register-password")
password.send_keys("my password")
browser.find_element_by_name("login").click()
time.sleep(2)
但是,当上面的代码运行时,我的问题是,它会产生以下错误:
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
【问题讨论】:
【参考方案1】:Selenium Discord 使用 Python 登录:
我尝试了上述所有代码,但它对我不起作用,所以经过一番忙碌,这里是 Discord Selenium Python 自动化代码。
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()
【讨论】:
【参考方案2】:我会使用 CSS attribute = value 选择器来定位所需的元素。
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()
【讨论】:
【参考方案3】:-
您不需要定义
browser
(Firefox
实例),因为您已经拥有driver
(另一个Firefox
实例)
您需要将选择器的类型作为第一个参数传递给find_element
,例如
email = driver.find_element("name", "register-email")
email = driver.find_element(value="register-email") # if your selector type is "id" (default type)
【讨论】:
现在当我做 email = driver.find_element(id="register-email") 这个弹出 TypeError: find_element() got an unexpected keyword argument 'id' @bebe 你为什么这样做?你在我的代码哪里找到id="register-email"
?以上是关于试图让一个机器人与 Selenium Python 建立不和谐的连接的主要内容,如果未能解决你的问题,请参考以下文章
我试图让我的 python twitter 机器人每小时每 30 分钟发一次推文。我该怎么办? [关闭]
如何让 Selenium/Ruby 机器人在执行操作之前等待?