循环报错:selenium.common.exceptions.StaleElementReferenceException

想要循环页面中的元素,发现报错。百度了很多地方,刷新试一试,然后好用了,记录于此。原因是页面一直在变化,我们需要再循环之前 等页面刷新完,这样就能找到对应元素了。

就是在查询后,循环之前刷新了一下页面。driver.refresh()

报错信息:

selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element

截图:

我的代码:一开始

from hmac import new

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select

import time
driver=webdriver.Chrome()
driver.maximize_window()
frist_url = 'http://yf.thunisoft.com/index.php?m=user&f=login'
driver.get(frist_url)
driver.implicitly_wait(30)#隐式等待,3000秒内一直在找元素
driver.find_element_by_xpath('//*[@id="account"]').send_keys('yanglin-2')
driver.find_element_by_xpath('//*[@name="password"]').send_keys('6789@jkl')
driver.find_element_by_xpath('//*[@id="submit"]').click()
driver.find_element_by_xpath('//*[@data-id="feedback"]').click()
driver.find_element_by_xpath('//*[@data-id="bysearch"]').click()
#定位下拉框
driver.find_element_by_id("searchbox1").click()
# 点击下拉框中的选项
driver.find_element_by_xpath('//*[@id="field1_chosen"]/a/span').click()
driver.find_element_by_xpath('//*[@id="field1_chosen"]/div/ul/li[7]').click()

time.sleep(1)
driver.find_element_by_xpath('//*[@id="pk_value1-search"]').click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="pk_value1-search"]').send_keys("葛文迅")
time.sleep(1)

driver.find_element_by_xpath('//*[@id="pk_value1-item-gewx-option"]').click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="submit"]').click()
driver.implicitly_wait(30)#隐式等待,3000秒内一直在找元素
# driver.refresh()
elements=driver.find_elements_by_css_selector('td>a>span')
for element in elements:
    print(element.text)






代码修改后:

from hmac import new

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select

import time
driver=webdriver.Chrome()
driver.maximize_window()
frist_url = 'http://yf.thunisoft.com/index.php?m=user&f=login'
driver.get(frist_url)
driver.implicitly_wait(30)#隐式等待,3000秒内一直在找元素
driver.find_element_by_xpath('//*[@id="account"]').send_keys('yanglin-2')
driver.find_element_by_xpath('//*[@name="password"]').send_keys('6789@jkl')
driver.find_element_by_xpath('//*[@id="submit"]').click()
driver.find_element_by_xpath('//*[@data-id="feedback"]').click()
driver.find_element_by_xpath('//*[@data-id="bysearch"]').click()
#定位下拉框
driver.find_element_by_id("searchbox1").click()
# 点击下拉框中的选项
driver.find_element_by_xpath('//*[@id="field1_chosen"]/a/span').click()
driver.find_element_by_xpath('//*[@id="field1_chosen"]/div/ul/li[7]').click()

time.sleep(1)
driver.find_element_by_xpath('//*[@id="pk_value1-search"]').click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="pk_value1-search"]').send_keys("葛文迅")
# dd=driver.find_element_by_xpath('//*[@data-vaule="gewx"]').send_keys("葛文迅")
time.sleep(1)

driver.find_element_by_xpath('//*[@id="pk_value1-item-gewx-option"]').click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="submit"]').click()
driver.implicitly_wait(30)#隐式等待,3000秒内一直在找元素
driver.refresh()#这里是解决办法
elements=driver.find_elements_by_css_selector('td>a>span')
for element in elements:
    print(element.text)






猜你喜欢

转载自blog.csdn.net/honghong3864/article/details/113332050