图片库中的15个元素之后出现StaleElementReferenceException

时间:2019-05-04 09:58:50

标签: python selenium automated-tests

我正在尝试从我的网站中获取图像链接,该网站包含约40张图像,并且我正在使用driver.find_elements_by_css_selector将所有图像都显示在列表中。

当我遍历此列表并打印这些图像的ID时,对于前15张图像,抛出StaleElementReferenceException

之后,一切正常

我正在使用WebDriverWait(driver, delay).until(EC.presence_of_element_located((By.ID, 'image-list')))加载图片库。

如何解决此StaleElementReferenceException

谢谢。

1 个答案:

答案 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'))