2017-02-23 26 views
-1

Может кто-нибудь, пожалуйста, помогите мне решить этот AttributeError? Я пытался получить страницу_страницы веб-страницы с бесконечным прокруткой. И перед тем, как получить эту целевую страницу, мне нужно было войти на целевой сайт.jj = Login AttributeError: type object 'Login' не имеет атрибута 'driver'

Спасибо.

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

В какой строке это не удается? Отправьте полный стек ошибок. Просто подумайте, в 'init' вы вызываете' log_in' до того, как водитель заработает (?) – Arghajit

+0

Traceback (последний последний вызов): Файл «D:/***/***/PycharmProjects/***/02.py ", строка 44, в jj.log_in (Login, log_url, target_url, user, pass_word) Файл« D:/***/***/PycharmProjects/***/02.py », строка 23 , в log_in self.driver.get (log_url) AttributeError: type object 'Login' не имеет атрибута 'driver' –

ответ

1

В вашей init() вы вызова метода log_in() перед созданием WebDriver. В этом методе вы пытаетесь выполнить вход в систему, используя driver, который еще не создан. Это приводит к ошибке, заявляя, что ваш класс Login не имеет атрибута driver.

Переместить self.log_in(log_url, target_url, user, pass_word) в нижнюю часть init(), чтобы вы не пытались использовать атрибуты, которые еще не были инициализированы.

Редактировать

Вы также не создает экземпляр вашего Login класса. jj = Login нужны скобки. Здесь вы можете изменить jj.log_in(Login, log_url, target_url, user, pass_word) на jj.log_in(log_url, target_url, user, pass_word).

Возможно, вам необходимо изучить основы программирования Python перед тем, как заняться Selenium с ним.

+0

Traceback (последний последний звонок): Файл «D:/***/***/PycharmProjects/* **/02.py ", строка 44, в jj.log_in (Login, log_url, target_url, user, pass_word) Файл" D:/***/***/PycharmProjects/***/02. py ", строка 23, в log_in self.driver.get (log_url) AttributeError: type object 'Login' не имеет атрибута 'driver' –

+0

Я сделал, как вы wro te, все еще имея ту же ошибку –

+0

@Un_lh См. мое редактирование – RemcoW

Смежные вопросы