2013-07-22 67 views
1

網站有6個鏈接的頂級菜單。我能得到這個鏈接是這樣的名單:如何用Selenium webdriver和Python逐個點擊鏈接

links = browser.find_elements_by_css_selector(MENU_LINKS_CSS_SELECTOR) 

這個我需要點擊該鏈接指向一個個後。如果我這樣做:

for link in links: 
    link.click() 

我收到以下錯誤:selenium.common.exceptions.StaleElementReferenceException: Message: u'Element not found in the cache - perhaps the page has changed since it was looked up'。據我所知,這個錯誤引發了因爲WebElement實例和網頁的DOM在重新加載頁面(點擊鏈接)後中斷連接。

在這裏,我應該注意到頂級菜單在所有頁面上都是一樣的。

那麼,我做錯了什麼?如何解決這個問題? TIA!

+1

所以你知道你在收到異常可能是由刷新頁面造成的鏈接被點擊。因此,保存的「硒」對列表中下一個鏈接的引用將不再存在。根據Svineet的回答,每次你想點擊下一個鏈接時,你都需要收集鏈接列表 - '刷新'每個鏈接的硒引用。 –

回答

5

我不知道很多硒,但你應該再次選擇鏈接 -

for i in range(0,6): 
    links = browser.find_elements_by_css_selector(MENU_LINKS_CSS_SELECTOR) 
    links[i].click() 
+0

thx很多!這解決了這個問題!:-) – dizpers

+0

coul你標記我的答案是否正確?那就是如果它適合你 – svineet

相關問題