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