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)