AttributeError:“列表”对象没有属性“ send_keys”

时间:2019-07-12 11:59:26

标签: python selenium

我正在制作一个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()

我希望将其登录,以便我可以进一步处理我的项目。

2 个答案:

答案 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]')

愚蠢的感觉。感谢您的帮助!