2

我目前在Python上使用Selenium,並且對它有個疑問。Python Selenium改變瀏覽器後保留元素

elements = driver.find_elements_by_css_selector("div.classname a") 
for element in elements: 
    element.click() 
    driver.back() 

由於使用回來的前一頁回()在此代碼,硒找不到元素了,儘管我仍然需要它。

如果有人有任何線索,請幫助我。

許多讚賞提前當您更改頁面

回答

1

您可以將元素存儲在列表中並使用循環對其進行處理。例如:

elementList = driver.find_elements_by_css_selector("div.classname a") 
for i in range(len(elementList)): 
    element = driver.find_elements_by_css_selector("div.classname a")[i] 
    element.click() 
    driver.back() 
1

硒創建一整套新的對象 - 無論你點擊一個鏈接,或返回的頁面。如果單擊第3行中的元素會導致Selenium加載新頁面,則第二個元素測試會得到StaleElementException。所以你必須做的是每次執行driver.back()時,都需要像在第一行那樣搜索頁面上的元素對象,並且至少可以維護一個計數器,你已經點擊過的元素(假設他們離開頁面)。合理?

+0

感謝您的親切回答。我不確定明白你的意思,你推薦我保存鏈接,然後用driver.get(url)之類的函數瀏覽它們。我理解得好嗎? 但是,在我的實驗中,需要「單擊鏈接的動作」,而不僅僅是driver.get(url)類似的東西。 – Joon

相關問題