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

Posted SpriteGirl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

 

以上是关于Selenium 获取一组元素然后循环点击的主要内容,如果未能解决你的问题,请参考以下文章

Selenium 定位一组元素

Selenium2学习-- 定位一组元素find_elements

Selenium2+python自动化11-定位一组元素find_elements

Selenium2+python自动化11-定位一组元素find_elements

Selenium2+python自动化11-定位一组元素find_elements转载

Selenium-一组元素的定位