2013-07-25 76 views
1

我想登錄到一個網站,然後一旦登錄導航到網站上的其他頁面,使用Selenium登錄。但是,當我嘗試導航到其他頁面時,我發現我已經註銷。保持在Python中使用Selenium登錄

我相信這是因爲我不明白webdriver.Firefox().get()函數是如何工作的。

我的代碼:

from selenium import webdriver 
from Code.Other import XMLParser 

#Initialise driver and go to webpage 
driver = webdriver.Firefox() 
URL = 'http://www.website.com' 
driver.get(URL) 

#Login 
UserName = XMLParser.XMLParse('./Config.xml','UserName') 
Password = XMLParser.XMLParse('./Config.xml','Password') 
element = driver.find_elements_by_id('UserName') 
element[0].send_keys(UserName) 
element = driver.find_elements_by_id('Password') 
element[0].send_keys(Password) 
element = driver.find_elements_by_id('Submit') 
element[0].click() 

#Go to new page 
URL = 'http://www.website.com/page1' 
driver.get(URL) 

不幸的是,我導航到新的頁面,但我不再登錄,我該如何解決這個問題?

+0

請問有沒有什麼方法可以讓你'上click' '元素'登錄後到達第二頁?如果你這樣做,而不是使用第二個'driver.get()',會發生同樣的情況嗎? –

+0

如果我搜索鏈接並使用'click',我仍然登錄(y)。這感覺更像是一種解決方法。 – rwolst

+0

想想你的用戶將如何使用你的網站 - 這就是Selenium/Webdriver正試圖複製的內容。你會用戶打開基本URL,登錄,然後鍵入一個新的URL或他們打開「基本」的URL,登錄,然後點擊鏈接到達第二頁? –

回答

1

看起來網站沒有足夠的時間在您的授權表單中提交。您點擊submit但您不等待回覆並打開另一個網址。

等到登錄後發生某些事件(如獲取cookies或DOM中的某些更改或time.sleep),然後才轉到其他頁面。

PS:如果它不會幫助,嘗試登錄後查看你的cookies並打開新的URL後,也許這是問題的授權後端或webdriver的