我正在制作一个Twitter机器人,该机器人可以在运行脚本时自动登录。但是,每当我运行脚本时,都会遇到一个错误,我找不到任何解决方案。有谁知道如何解决它?
我尝试将element
更改为elements
,将send_keys
更改为send_Keys
,但此操作无效
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
class TwitterBot:
def __init__(self,username,password):
self.username = username
self.password = password
self.bot = webdriver.Firefox()
def login(self):
bot = self.bot
bot.get('https://twitter.com/')
time.sleep(3)
email = bot.find_elements_by_class_name('email-input')
password = bot.find_elements_by_class_name('session[password]')
email.clear()
password.clear()
email.send_keys(self.username)
password.send_keys(self.password)
password.send_keys(Keys.RETURN)
ed = TwitterBot('EMAIL HERE', 'PASSWORD HERE')
ed.login()
我希望将其登录,以便我可以进一步处理我的项目。
答案 0 :(得分:0)
find_elements_by_xxx 将返回元素列表,并且您无法在列表上执行send_keys
操作。取而代之的是,您必须使用 find_element_by_xxx 它将返回单个元素,然后您才能执行基于元素的操作。
如果要获取元素列表,然后对任何特定元素执行操作,则可以使用以下逻辑。
elements = driver.find_elements_by_xxx("locator")
# perform operation on the first matching element
elements[0].send_keys("value_goes_here")
# if you want to perform operation on the last matching element
element[-1].send_keys("value_goes_here")
答案 1 :(得分:0)
我现在知道我搞砸了:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
class TwitterBot:
def __init__(self,username,password):
self.username = username
self.password = password
self.bot = webdriver.Firefox()
def login(self):
bot = self.bot
bot.get('https://twitter.com/')
time.sleep(3)
email = bot.find_element_by_name('session[username_or_email]')
password = bot.find_element_by_name('session[password]')
email.clear()
password.clear()
email.send_keys(self.username)
password.send_keys(self.password)
ed = TwitterBot('EMAIL HERE', 'PASSWORD HERE')
ed.login()
在线email = bot.find_element_by_name('session[username_or_email]')
首先是bot.find_element_by_class_name('session[username_or_email]')
愚蠢的感觉。感谢您的帮助!