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 获取一组元素然后循环点击的主要内容,如果未能解决你的问题,请参考以下文章
Selenium2学习-- 定位一组元素find_elements
Selenium2+python自动化11-定位一组元素find_elements
Selenium2+python自动化11-定位一组元素find_elements