2017-01-02 48 views
2

我不知道如何模擬點擊「下一步」,我當前的代碼將只停留在第一instance..I還創建了一個for循環,但它只是說目的不是修改我的代碼iterable..any方式?如何模擬點擊「下一步」直到結束?

from selenium import webdriver 
browser = webdriver.Firefox() 
import time 
browser.get('https://www.autocodes.com/obd-code-list/powertrain/1') 

linkElem = browser.find_element_by_css_selector("#pag > a") 
type(linkElem) 
linkElem.click() # follows the "Next" link 
+0

什麼屈服? http://stackoverflow.com/questions/231767/what-is-the-function-of-the-yield-keyword –

+0

對不起忘了告訴我剛開始蟒蛇... –

+0

沒有概率,檢查產部分例如,用一個簡單的沙箱的情況下嘗試瞭解 –

回答

1

嘗試以下代碼:

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 


browser = webdriver.Firefox() 
import time 
count = 0 
browser.get('https://www.autocodes.com/obd-code-list/powertrain/1') 
while(1): 
    try: 
     linkElem = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, "//div[@id='pag']//a[contains(text(),'Next')]"))) 
    except: 
     import traceback 
     traceback.print_exc() 
     print "last page reached." 
     break; 
    # type(linkElem) 
    count += 1 
    print "count " , count 
    linkElem.click() # follows the "Next" link 
    time.sleep(1) 

代碼連續地檢查Next元件是否存在於一個infinite while loop。如果存在,點擊它。否則,打破循環。

注:count變量添加調試語句知道循環計數。如果不需要,您可以刪除與之相關的代碼。

注:同樣,traceback被添加到打印完整的曲線。只是打印異常跟蹤供您參考。

注意:break關鍵字在達到最後一頁後跳出無限循環並從while循環中出來並繼續執行下一個代碼。

參考文獻:

  1. http://selenium-python.readthedocs.io/waits.html
+0

此代碼是完美的!我已經看到了這種編碼,但由於我的編程知識有限,所以我不鼓勵對它進行修改。謝謝..我會一塊一塊地研究這些代碼。 –

+0

爲了更好地理解邏輯而添加註釋。我希望它能幫助你。 –

+0

你最好的男人..謝謝..你開始我的一年! –

0

可能是您的元素ID或「linkElem」類型在首次點擊後發生變化。

+0

不知道,但是當我開始越來越css_selector頁 「動力總成/ 1」 ..它說#pag>一:nth-​​child(1),但接着在「.... powertrain/2」上會顯示#pag> a:nth-​​child(3)直到最後一頁......這是否是原因?我怎麼解決它? –

+0

是的!那就是問題所在。第一次點擊後。元素位置得到改變,這樣你爲什麼unbale迭代。 –

+0

感謝您的信息,我剛剛開始編程,他們說python是相對的散文,所以我選擇它.. –