Selenium 获取一组元素然后循环点击


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)

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM