1,问题: 当我们第一遍找元素是找到了,而你循环后页面已经新刷新,所以不能用第一遍找出的元素了
即:页面刷新后元素的属性是没变,但是element却变了,所有之前定位的元素element都过期了
2,解决方案
1.针对页面刷新后,之前的元素失效问题,在for循环体里面可以重新定位一次,覆盖掉之前旧的就行了。
2.第一次获取全部元素后,通过len函数获取总个数
3.for循环的时候不要循环定位元素的list对象,换成range函数去循环
3,实例:
错误:
up_list = driver.find_elements_by_xpath("//ul/li/form[contains(@class,'up')]")
for up in up_list:
qa_id = up.get_attribute("action")
qa_id = re.search(r"question/(.*)", qa_id)
qa_id = qa_id.group(1)
if qa_id in qa_id_list:
print(qa_id)
up.find_element_by_xpath("./span//input").click()
time.sleep(2)
正确:
up_list = driver.find_elements_by_xpath("//ul/li/form[contains(@class,'up')]")
for up in range(len(up_list)):
qa_id = up_list[up].get_attribute("action")
qa_id = re.search(r"question/(.*)", qa_id)
qa_id = qa_id.group(1)
if qa_id in qa_id_list:
print(qa_id)
up_list[up].find_element_by_xpath("./span//input").click()
time.sleep(2)
up_list = driver.find_elements_by_xpath("//ul/li/form[contains(@class,'up')]")
网友评论