2013-01-07 68 views
1

我已經創建了一個匹配xpath的元素列表,並希望逐一點擊每個元素。但是,如果我使用get_attribute("href")命令,我得到一個'unicode'對象沒有屬性'點擊'錯誤。這是因爲href是一個字符串。如果我不使用get_attribute並簡單地使用這個命令:需要點擊一個xpath使用python的硒webdriver

driver.find_elements_by_xpath(".//div/div/div[3]/table//tr[12]/td/table//tr/td/a") 

我得到一個列表元素。我可以成功點擊列表中的第一個鏈接;然而,當我點擊第二秒我得到這個錯誤:'元素不是 在緩存中找到 - 也許頁面已經改變,因爲它被查找' 我想象的原因,頁面鏈接我想迭代通過經由搜索查詢轉換爲Java產生(這是在href鏈接之一:

javascript:__doPostBack('ctl00$Content$listJobsByAll1$GridView2','Page$3')) 

的相關信息的一個多個片:只有兩個屬性在該XPath位置:href和文本

所以,鑑於我正在處理一個Java網站,只有兩個屬性,我希望有人可以告訴我哪些webdriver命令我可以用來獲得一系列可點擊的靜態鏈接。除了具體的答案之外,關於我如何能夠自己想出來的任何建議都會有所幫助。

回答

2

如果您點擊與selenium的鏈接,您正在更改當前頁面。您指向的頁面沒有下一個元素。

獲得鏈接使用:

'.//tag/@href' 

你可以試試:

for elem in elems: 
    elem.click() 
    print browser.current_url 
    browser.back() 
+0

感謝。我不知道爲什麼我沒有嘗試過 - 沒有理由不起作用。當我回家時我會跑步。 – user1780952

+0

所以當我回去時,元素仍然不同,因此我不得不1)對元素進行計數,然後2)遍歷元素列表的範圍,並且每次都實例化列表,因爲單擊第i個元素。 (「.// div/div/div [3]/table // tr [12]/td/table // tr/td/a」)中的i的 – user1780952

+0

: \t list.append(i) 計數= LEN(列表)-1 打印計數 爲i的範圍(計數): \t打印我 \t目標= driver.find_elements_by_xpath(」 .// DIV/DIV/DIV [3] /表//TR [12]/TD /表// TR/TD/A「) \t打印目標 \t目標[I]。點擊() \t time.sleep(5) \t driver.back() \t時間.S leep(5) – user1780952