关于selenium遍历同种元素的错误

from selenium import webdriver
import time

要想调用键盘按键操作需要引入keys包

from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains #导入鼠标相关的包
driver = webdriver.Firefox()
driver.get('https://iouke.cn/#/human_capital')
time.sleep(1)
element1=driver.find_element_by_class_name('tologin')
driver.execute_script("arguments[0].click();", element1)
time.sleep(1)
driver.find_element_by_id("txtAccount").send_keys(u"17829875205")
driver.find_element_by_id("pwdOne").send_keys(u"#########")
time.sleep(1)
element1=driver.find_element_by_class_name('button')
driver.execute_script("arguments[0].click();", element1)
time.sleep(3)
element1=driver.find_element_by_class_name('right')
driver.execute_script("arguments[0].click();", element1)
time.sleep(2)
i=1
while i<100:
time.sleep(3)
element1 = driver.find_elements_by_class_name('getAccept')[i] #问题就在这里当i>10时就报错说超出索引范围**
driver.execute_script("arguments[0].click();", element1)
time.sleep(3)
element1 = driver.find_element_by_class_name('publishComment')
driver.execute_script("arguments[0].click();", element1)
time.sleep(1)
driver.find_element_by_id("commentcontents").send_keys(u"我们是最棒的,加油")
time.sleep(1)
element1 = driver.find_element_by_class_name('announceTxt')
driver.execute_script("arguments[0].click();", element1)
time.sleep(2)
element1 = driver.find_element_by_class_name('back')
driver.execute_script("arguments[0].click();", element1)
time.sleep(3)
element1 = driver.find_element_by_class_name('right')
driver.execute_script("arguments[0].click();", element1)
time.sleep(1)
c=i+1
a=driver.find_elements_by_class_name('name')[i]
driver.execute_script("arguments[0].scrollIntoView();", a)
time.sleep(1)
i+=1
print(i)

把你的代码用代码段</>的文本形式发一下,我们才能知道原因,好为你解答。

可能是因为所选取的节点的内容有的为空,超出索引范围,你可以在循环中,用 if else或try except,来过滤一下数据。