我正在尝试从我的网站中获取图像链接,该网站包含约40张图像,并且我正在使用driver.find_elements_by_css_selector
将所有图像都显示在列表中。
当我遍历此列表并打印这些图像的ID时,对于前15张图像,抛出StaleElementReferenceException
我正在使用WebDriverWait(driver, delay).until(EC.presence_of_element_located((By.ID, 'image-list')))
加载图片库。
如何解决此StaleElementReferenceException
谢谢。
答案 0 :(得分:1)
我相信保存图像的容器是动态加载的,因此您必须使用以下逻辑。
# load the images in the dynamic list container
driver.find_element_by_xpath("(//*[@id='image-list']//img)[last()]").location_once_scrolled_into_view
time.sleep(1)
driver.find_element_by_xpath("(//*[@id='image-list']//img)[last()]").location_once_scrolled_into_view
time.sleep(1)
#get number of images
images = driver.find_elements_by_xpath("//*[@id='image-list']//img")
# use the for loop
for imageNum in range(len(images)):
# access the image here
image = driver.find_element_by_xpath("(//*[@id='image-list']//img[)" + str(imageNum+1) + "]")
# now you can use the image element (first scroll to element)
image.location_once_scrolled_into_view
# get the image link here
print(image.get_attribute('src'))