首页 > 其他 > 详细

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

时间:2021-05-20 22:36:04      阅读:23      评论:0      收藏:0      [点我收藏+]

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 获取一组元素然后循环点击

原文:https://www.cnblogs.com/spritegirl/p/14790068.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!