2017-02-23 3 views
-1

Quelqu'un pourrait m'aider s'il vous plaît à résoudre ce AttributeError? J'essayais d'obtenir la page_source d'une page Web qui a un scroll infini. Et avant d'obtenir cette page cible, je devais me connecter au site Web cible.jj = Login AttributeError: tapez l'objet 'Login' n'a pas d'attribut 'driver'

Merci.

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

class Login: 

    def __init__(self, log_url, target_url, user, pass_word): # comments 
     # Comments 
     self.driver = webdriver.Chrome("D:/*****/******/Downloads/chromedriver.exe") # comments 
     self.reloads = 1000 
     self.pause_A = 0 
     self.pause_B = 15 
     self.username = self.driver.find_element_by_id('email') 
     self.password = self.driver.find_element_by_id('password') 
     self.sleep = time 
     self.lastElement = self.driver.find_element_by_class_name('photo_link') 
     self.log_in(log_url, target_url, user, pass_word) # Comments 

    def log_in(self, log_url, target_url, user, pass_word): # comments 
     #comments 
     self.driver.get(log_url) # Comments 
     self.username.send_keys(user) 
     self.password.send_keys(pass_word) 
     self.driver.find_element_by_class_name('unified_signup__label').submit() 
     self.sleep.sleep(self.pause_B) 
     self.driver.find_element_by_tag_name('body').send_keys(Keys.LEFT_CONTROL + 't') 
     self.driver.get(target_url) # comments 
     self.lastElement.send_keys(Keys.NULL) # comments 
     # comments 
     for _ in range(self.reloads): 
      self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") 
      self.sleep.sleep(self.pause_A) 

if __name__ == '__main__': 
    jj = Login 
    fun = ['https://anywebsite.com/login', 'https://anywebsite.com/lok.php', 'user', 'password'] 
    for tup in fun: 
     log_url = tup[0] 
     target_url = tup[1] 
     user = tup[2] 
     pass_word = tup[3] 
     jj.log_in(Login, log_url, target_url, user, pass_word) 
+0

Sur quelle ligne cela échoue? Veuillez poster la pile d'erreurs complète. Juste une idée, dans 'init' vous appelez' log_in' avant que le pilote ne se déclenche (?) – Arghajit

+0

Traceback (dernier appel en dernier): Fichier "D:/***/***/PycharmProjects/***/02.py ", ligne 44, dans jj.log_in (Login, log_url, target_url, utilisateur, mot de passe) Fichier" D:/***/***/PycharmProjects/***/02.py ", ligne 23 , dans log_in self.driver.get (log_url) AttributeError: l'objet type 'Login' n'a pas d'attribut 'driver' –

Répondre

1

Dans votre init() dont vous appelez votre méthode log_in() avant de créer votre WebDriver. Dans cette méthode, vous essayez d'effectuer une connexion en utilisant le driver qui n'a pas encore été créé. Cela entraîne une erreur indiquant que votre classe Login n'a pas d'attribut driver.

Déplacez self.log_in(log_url, target_url, user, pass_word) vers le bas du init() pour ne pas essayer d'utiliser les attributs qui n'ont pas encore été initialisés.

Modifier

Vous aussi ne pas créer une instance de votre classe Login. jj = Login a besoin de parenthèses. À partir de là, vous pouvez changer jj.log_in(Login, log_url, target_url, user, pass_word) à jj.log_in(log_url, target_url, user, pass_word).

Vous voudrez peut-être apprendre les bases de la programmation Python avant d'attaquer Selenium avec.

+0

Traceback (appel le plus récent en dernier): Fichier "D:/***/***/PycharmProjects/* **/02.py ", ligne 44, en jj.log_in (Login, log_url, target_url, utilisateur, mot_de_passe) Fichier" D:/***/***/PycharmProjects/***/02. py ", ligne 23, dans log_in self.driver.get (log_url) AttributeError: tapez l'objet 'Login' n'a pas d'attribut 'driver' –

+0

Je l'ai fait comme vous wro te, ayant toujours la même erreur –

+0

@Un_lh Voir mon édition – RemcoW