Javascript Python Selenium:等待类可见

Javascript Python Selenium:等待类可见,javascript,python,selenium,automated-tests,Javascript,Python,Selenium,Automated Tests,我试图从一个有不同网页的网站上获取数据 我的代码如下所示: item_List = [] def scrape(pageNumber): driver.get(url + pageExtension + str(pageNumber)) items = driver.find_elements_by_class_name("Item-information") for item in items: item_List.append(item.text)

我试图从一个有不同网页的网站上获取数据

我的代码如下所示:

item_List = []
def scrape(pageNumber):
    driver.get(url + pageExtension + str(pageNumber))
    items = driver.find_elements_by_class_name("Item-information")
    for item in items:
        item_List.append(item.text)
    return item_List
现在我可以从一个页面收集我想要的数据。 当我跑步时:

 print scrape(23)
print scrape(14) #any page number really
print scrape(23)
我得到了我需要的结果。但当我跑步时:

 print scrape(23)
print scrape(14) #any page number really
print scrape(23)
Selenium首先加载页面“url+pageExtension+str(14)”并成功获取数据。然后加载“url+pageExtension+str(23)”,但不刮取数据。我得到以下错误代码:

selenium.common.exceptions.StaleElementReferenceException: Message:    
stale element reference: element is not attached to the page document
我认为这是因为浏览器加载第二页的速度不够快,导致selenium无法抓取我要查找的类。我尝试了一些等待功能,但到目前为止还没有成功。非常感谢您的帮助

提前谢谢

尝试以下方法:

item_List = []
def scrape(pageNumber):
    driver.get(url + pageExtension + str(pageNumber))
    items = driver.find_elements_by_class_name("Item-information")
    for item in items:
        item_List.append(item.text)
    element = WebDriverWait(driver, 10).until(
          EC.staleness_of((By.CLASS_NAME, "Item-information"))) # waits till the element is NOT attached to the DOM.
    return item_List


注意:在查找相同的元素(使用相同的类名)时,
项仍然包含对您已经访问过的上一个项目的引用。(此处
第14页
)。因此,当您访问
第24页
时,
指的是
第14页
中但不在
第24页
中的元素,因此给出
StaleElementReferenceException

AFAIK
StaleElementReferenceException
如果您有一个webelement或元素列表,则引发,类似于
items=driver。通过\u class\u name(“项目信息”)
查找\u元素,然后在页面更新后尝试处理
项目。您应该在每次迭代中重新定义可能导致页面更新的元素(列表)。我不确定我是否理解您的意思。你会怎么做?好的。。。您能检查异常日志的第一行以找出哪个元素实际上是过时的吗?此外,您可能需要更改您的问题标题,因为它毫无意义,并且不符合所描述的issueThanks Naveen!这可能非常简单,但如何在所定位的元素的可见性中使用页码?标题是否包含页码?或页码显示为网页的一部分?若页码是HTML的一部分,那个么只有您可以使用它。不管怎样,这只是一个暗示。你可以选择任何元素。如果我找不到唯一的元素怎么办?除了我试图搜集的信息外,每一页都完全相同。你有没有尝试过我分享的代码作为答案?还面临这个问题吗?如果是,则添加1-2秒的睡眠时间。另一个选项是等待body标签。也可以尝试一下,即(By.TAG,“body”)