首页 > 解决方案 > 变量值不会在 Python 的 while 循环中得到更新 - selenium

问题描述

我正在尝试加载更多元素并滚动加载更多元素(无限滚动,其中元素作为滚动加载)

问题:jobCards 值仅更改一次,然后即使循环再次运行也不会更改,如果在 while 循环运行之前为其分配了任何值,甚至不会更改一次

def totalJobs(self,):
    jobCards = self.find_elements_by_css_selector(
        'div[class^="job-cardstyle__JobCardHeader"]')
    return jobCards

while True:
    time.sleep(10)
    jobCards = self.totalJobs()
    print("Total Jobs - " + str(len(jobCards)))
    self.execute_script(
        "arguments[0].scrollIntoView({behavior: 'smooth',block: 'center'});", jobCards[len(jobCards)-1])
    #Some break Condition based on len(jobCards)

标签: pythonseleniumloopswhile-loopselenium-chromedriver

解决方案


变量jobCards每次都被重新定义。而且您只是调用该函数而不添加之前的长度jobCards

尝试如下并确认:

jobCards = [] # Make "jobCards" a class variable
def totalJobs(self,templist):
    templist = self.find_elements_by_css_selector('div[class^="job-cardstyle__JobCardHeader"]')
    return templist

while True:
    time.sleep(10)
    jobCards = jobCards + self.totalJobs(templist = []) # Keeping adding new length to previous one.
    print("Total Jobs - " + str(len(jobCards)))
    driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth',block: 'center'});", jobCards[len(jobCards)-1])
    #Some break Condition based on len(jobCards)

推荐阅读