1 # -*- coding:utf-8 -*
2 import time
3 from selenium import webdriver
5 driver = webdriver.Chrome()
6 driver.get('http://www.huya.com')
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 获取一组元素的长度,循环个数,每次循环都重新获取元素,防止失效(当页面刷新元素失效/改变可尝试此方法)
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)