TypeError с Python - PullRequest
       69

TypeError с Python

0 голосов
/ 07 мая 2020

Я только учусь Python и буду благодарен за любую помощь. При запуске приведенного ниже кода я получаю сообщение: «TypeError: объект 'str' не вызывается».

Как я могу это исправить?

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

class TwitterBot:
    def __init__(self,username,login):
        self.username = username
        self.login = login
        self.bot = webdriver.Safari()

def login(self):
        bot = self.bot
        bot.get('https://twitter.com/')
        time.sleep(3)
        email = bot.find_element_by_class_name('email-input')
        login = bot.find_element_by_name('session[login]')
        email.clear()
        login.clear()
        email.send_keys(self.username)
        login.send_keys(self.login)
        login.send_keys(Keys.RETURN)
        time.sleep(3)

auto = TwitterBot('email', 'password')
auto.login()

1 Ответ

0 голосов
/ 07 мая 2020

Здесь есть две проблемы. Первое связано с вашим форматированием. Поскольку def login(self): без отступа, это не метод вашего класса TwitterBot. Вторая проблема заключается в том, что у вас уже есть переменная-член класса с именем login, поэтому у вас будет конфликт имен.

Вы получаете TypeError, потому что пытаетесь вызвать строка login как метод.

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

class TwitterBot:
    def __init__(self,username,login_credential):
        self.username = username
        self.login_credential = login_credential
        self.bot = webdriver.Safari()

    def login(self):
        bot = self.bot
        bot.get('https://twitter.com/')
        time.sleep(3)
        email = bot.find_element_by_class_name('email-input')
        login = bot.find_element_by_name('session[login]')
        email.clear()
        login.clear()
        email.send_keys(self.username)
        login.send_keys(self.login_credential)
        login.send_keys(Keys.RETURN)
        time.sleep(3)

auto = TwitterBot('email', 'password')
auto.login()
...