2017-02-23 1 views
-1

누군가이 AttributeError 문제를 해결할 수 있도록 도와 주시겠습니까? 무한 스크롤이있는 웹 페이지의 page_source를 얻으려고했습니다. 목표 페이지를 받기 전에 대상 웹 사이트에 로그인해야했습니다.jj = Login AttributeError : type object 'Login'에 'driver'속성이 없습니다.

감사합니다. 당신의 init() 당신이 당신의 WebDriver를 만들기 전에 log_in() 방법을 호출에서

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 (최근 호출 마지막) : File "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 : 유형 객체 'Login'에 'driver'속성이 없습니다. –

답변

1

. 이 방법에서는 아직 생성되지 않은 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)으로 변경할 수 있습니다.

Selenium을 태클하기 전에 Python 프로그래밍의 기초를 배우고 싶을 수도 있습니다.

+0

추적 (가장 최근 호출 마지막) : 파일 "D :/***/***/PycharmProjects/*" **/02.py ", 줄 44, jj.log_in (로그인, log_url, target_url, 사용자, pass_word) 파일"D :/***/***/PycharmProjects/***/02. py ", line 23, log_in self.driver.get (log_url) AttributeError : type 객체 'Login'에는 'driver'속성이 없습니다. –

+0

wrock 아직 동일한 오류가 발생하고 있습니다. –

+0

@Un_lh 내 편집보기 – RemcoW

관련 문제