1.需求:循環點擊首頁6個tag
2.找到一組元素相同點
3.實現
1 # -*- coding:utf-8 -* 2 import time 3 from selenium import webdriver 4 5 driver = webdriver.Chrome() 6 driver.get('http://www.huya.com') 7 8 """ 9 方法1 Failed 10 提前獲取元素,循環元素,頁面出現刷新,已獲取元素失效,會報錯提示找不到元素(即使元素不變) 11 """ 12 item = driver.find_elements_by_class_name('hy-nav-item') 13 for i in range(len(item)): 14 item[i].click() 15 print(f'{i}:\t{item[i]}') 16 driver.implicitly_wait(5) 17 item = driver.find_elements_by_xpath('//*[@id="duya-header"]/div/div/div[1]/div[i+1]') 18 """ 19 方法2 20 獲取一組元素的長度,循環個數,每次循環都重新獲取元素,防止失效(當頁面刷新元素失效/改變可嘗試此方法) 21 22 """ 23 # 獲取一組元素的長度 24 counts = len(driver.find_elements_by_class_name('hy-nav-item')) 25 # 循環個數,range函數從0遞增 26 for i in range(counts): 27 # 每次循環,都重新獲取元素,防止元素失效或者頁面刷新后元素改變了 28 item = driver.find_elements_by_xpath('//*[@id="duya-header"]/div/div/div[1]/div') 29 # 循環點擊獲取的元素 30 item[i].click() 31 # 打印每次獲取元素,調試用 32 print(f'{i}:\t{item[i]}') 33 # 隱式等待,避免頁面加載慢獲取元素失敗導致點擊失效 34 driver.implicitly_wait(5)