2015-10-23 262 views
1

我試圖從這site刮內容。要進入下一頁,我嘗試點擊頁面底部的下一頁按鈕。我也嘗試通過下拉列表更改的頁面,但我得到的錯誤作爲Element not visible元素不可見硒蟒

我甚至使用actionchain通過下一個頁面,以獲得試過:

act = ActionChains(self.driver) 
select_text=act.move_to_element(self.driver.find_element_by_xpath("//div[@id='pagination-group']/select[@id='pagination-select']")) 
select_text.click().perform() 
time.sleep(4) 
option_text = self.driver.find_elements_by_xpath("//div[@id='pagination-group']/select[@id='pagination-select']/option") 
for o in option_text: 
     if o.text in ('2','3','4','5','6'): 
      o.click() 

但我再次得到錯誤的line 47, in parse if o.text in ('2','3','4','5','6'):' StaleElementReferenceException: Message: Element not found in the cache - perhaps the page has changed since it was looked up

回答

0

你最初的做法, $("a",text:"Pagina successiva").click()可能是最好的。

這看起來很直接失敗。也許這些鏈接是從JS或其他東西產生的?在嘗試點擊之前嘗試在測試中添加睡眠,並查看是否有幫助。

0

Selenium Select爲您提供了從下拉webelement獲取options的方法。您可能想要使用它,而不是嘗試自行獲取選項。

嘗試,

selectElement = self.driver.find_element_by_css_selector("select#pagination-select") 
options = Select(selectElement).options; 

for o in options: 
    if o.text in ('2','3','4','5','6'): 
     o.click() 
0

的問題是,你正在尋找的鏈接頁面上兩次存在。第一個實例隱藏在頁面的頂部。解決此問題的一種方法是查找僅存在於頁面底部的容器元素。你可以使用這個選擇器來點擊你想要的元素。我只是測試它,它的工作原理。

driver.get("http://www.ospedaleuniverona.it/ecm/home/per-il-paziente/unita-operative") 
self.driver.find_element_by_css_selector("#pagination-container-dest a[title='Pagina successiva']").click()