2014-03-19 23 views
0

我不是Python中的專家,我不理解對我來說似乎很基本的東西。這裏是:在Python中循環並在try/except方法中檢查邏輯

我使用硒來獲取一個網頁,尋找一個特定位置的鏈接(實際上是「下一頁」的鏈接),如果鏈接存在,點擊它並開始全部。我的這段代碼是這樣的:

check = True 
while check: 

    #do something 

    #check if there is a link to a "next page": 

    try: 
     nextPageLink=driver.find_element_by_xpath("//div[@class='pgLinks']/a[3]") 

     nextPageLink.click() 
     time.sleep(timeToCharge) 
    except: 
     check = False 

該代碼只運行一次。它找到了到下一頁的鏈接,它會點擊它,但不會再次運行循環,就好像它通過except之外的代碼並將變量檢查置於False。

任何想法,爲什麼這是如此,我應該怎麼做呢?

感謝

+2

您是否曾嘗試向'except'塊添加'print'語句以查看它是否被觸發? @ sshashank124會使代碼只運行一次,OP希望它保持循環。 – IanAuld

+0

難道問題是在你使用它之前沒有定義'link'(事實上應該是'driver.get(nextPageLink)'')?一般來說,最好不要使用「except:'語句,因爲這樣你就可以捕獲所有的異常,但通常你想捕獲一個特定的異常。 – darthbith

+0

要*點擊*鏈接,請調用'nextPageLink.click()'。 – unutbu

回答

3

這個問題可能是你正在追趕所有例外。有些東西可能會在其他行中引發異常,並且您的catch-all子句正在觸發。

不要這樣做。找出你期望的異常,並且只抓住它們。其他任何事情都是一個合法的錯誤,應該會冒泡。

+0

解決,這是問題,遵循你所有的建議,我在那裏提出的其他異常提出,我不感興趣。謝謝! – user1862963