2017-02-23 24 views
-1

有人可以幫我解決這個AttributeError嗎?我試圖獲取無限滾動網頁的page_source。在獲取目標網頁之前,我需要登錄到目標網站。jj =登錄AttributeError:輸入對象'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:類型對象'登錄'沒有屬性'驅動程序' –

回答

1

在你init()你創建你的WebDriver之前打電話給你log_in()方法。在此方法中,您嘗試使用尚未創建的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

回溯(最近一次調用最後): 文件「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' –

+0

我已經盡你所能te,仍然有相同的錯誤 –

+0

@Un_lh看到我的編輯 – RemcoW

相關問題