2016-12-09 30 views
1

enter image description here如何從使用selenium python的頁面數去最後一頁?

這是我的UI和HTML DOM的屏幕截圖。

我想進入最後一頁,我可以做的是多次按下一個按鈕,但我不知道應該按多少次,所以我不認爲它是更好的方法。 你可以建議我使用硒命令更好的方法。

我用這個命令(未來持續按壓):

driver.find_element_by_xpath('html/body/div[2]/div/section[8]/div/div/div[3]/div/div[2]/table/tfoot/tr/td/div/ul/li[5]/a').click() 
+0

您是否有一個URL作爲示例?另外,最好將相關的DOM作爲代碼而不是圖像。 – Moshisho

+0

你可以把這個例子當作gmail.com ......我們必須向下滾動頁面才能看到第一封郵件。 –

回答

0

您可以使用try/except像:

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

while True: 
    try: 
     WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//li[not(@class="disabled")]/a[contains(text(), "Next")]'))).click() 
    except TimeoutException: 
     break 

這應該允許你點擊Next按鈕,直到最後一頁(直到按鈕被禁用)

PS您不應該使用絕對的XPath,例如html/body/div[2] ... /div/ul/li[5]/a,因爲它對DOM的變化很敏感。使用目標元素的屬性或其父/子節點創建相對的XPath

+0

當我用它只是點擊下一個按鈕:** driver.find_element(By.XPATH,'// a [text()=「Next」]')。click()**它給了我錯誤** NoSuchElementException :消息:找不到元素:{「method」:「xpath」,「selector」:「// a [text()= \」Next \「]」} ** ......當我使用代碼建議由它給我一個錯誤**除了**以外的語法無效** –

+0

當我使用你給出的代碼,它給了我一個錯誤**,除了TimeoutException:SyntaxError:無效的語法**然後我更新了代碼:'While True:try:WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,'// a [contains(text(),「Next」)]')))。click()except :TimeoutException:break'.Then代碼連續按下一個按鈕,因爲它沒有得到任何異常。還有一件事你的代碼中的這個TimeoutException是什麼? –

+0

哦,是的,我忘了添加'try' :)'WebDriverWait(driver,10)'如果condition(元素可點擊)返回元素爲'True',但如果在10秒後仍然無法點擊'TimeoutException'被提高 – Andersson

相關問題