相关文章推荐
暴走的电池  ·  python ...·  2 周前    · 
淡定的核桃  ·  python ...·  1 周前    · 
面冷心慈的马克杯  ·  spring boot ...·  11 月前    · 
性感的西装  ·  CSS reference guide ...·  1 年前    · 
英姿勃勃的伤疤  ·  Android ...·  1 年前    · 

1.需求:循环点击首页6个tag

python selenium 循环 selenium循环点击_页面加载

2.找到一组元素相同点

python selenium 循环 selenium循环点击_selenium_02

3.实现

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)