我正在尝试浏览目录中的每个产品并打印产品图像链接。以下是我的代码。
product_links = driver.find_elements_by_css_selector(".product-link")
for link in product_links:
driver.get(link.get_attribute("href"))
images = driver.find_elements_by_css_selector("#gallery img")
for image in images:
print(image.get_attribute("src"))
driver.back()
但是我收到错误selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
,我认为是发生这种情况的原因是,当我们返回目录页面时,页面再次被加载,product_links
中的元素引用变得过时了。
我们如何避免这个问题?有没有更好的解决方案呢?
答案 0 :(得分:0)
我遇到了类似的问题,这就是我如何解决的。基本上,您必须在每次返回页面时刷新页面并重新建立链接列表。当然,您不能使用for
循环,因为每次对象都是陈旧的。
不幸的是,由于我无权访问您的实际网址,因此我无法对其进行测试,但这应该是关闭的
def get_prod_page(link):
driver.get(link.get_attribute("href"))
images = driver.find_elements_by_css_selector("#gallery img")
for image in images:
print(image.get_attribute("src"))
driver.back()
counter=0
link_count= len(driver.find_elements_by_css_selector(".product-link"))
while counter <= link_count:
product_links = driver.find_elements_by_css_selector(".product-link")[counter:]
get_prod_page(product_links[0])
counter+=1
driver.refresh()