之所以不能用 for 循環刪除的原因是元素刪除后頁面會重新渲染。
取出所有的元素,使用while循環依次刪除數組里的第一個元素,直到全部刪除。
1 from selenium import webdriver 2 import time 3 4 dr = webdriver.Chrome() 5 dr.get('') 6 dr.implicitly_wait(10) 7 8 dr.find_element_by_css_selector("input[name='username']").send_keys("") 9 dr.find_element_by_css_selector("input[name='password']").send_keys("") 10 11 dr.find_element_by_css_selector("button[type='submit']").click() # 登錄 12 13 # dr.find_element_by_xpath("//ul[@class='main-nav']//li[3]").click() 14 # #點擊題目 此方法適用於固定的位置,不同角色的欄目位置不一樣,因此不推薦使用 15 16 dr.find_element_by_link_text("題目").click() #直接使用link_text為題目的元素 17 18 time.sleep(1) 19 20 dr.find_element_by_partial_link_text("考點管理").click() #點擊考點 21 # partial_link_text和link_text的區別是一個是模糊搜索,一個是精准搜索 22 23 #dr.find_element_by_xpath("//div[@class='page']//div//a[1]").click() #第一頁數據 24 25 dr.implicitly_wait(2) 26 while True: 27 delEles = dr.find_elements_by_xpath("//*[@id='del_btn']") #取出頁面所有的刪除鍵 28 29 if delEles == []: #刪除所有的元素或元素為空時,跳出循環 30 break 31 32 delEles[0].click() #點擊刪除第一個刪除按鈕 33 dr.find_element_by_css_selector( 34 "#layui-layer1 > div.layui-layer-btn.layui-layer-btn- > a.layui-layer-btn0").click() #確定刪除 35 dr.refresh() 36 time.sleep(1) 37 38 dr.implicitly_wait(10) 39 40 dr.quit()