2013-07-25 49 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的