使用python selenium在while循环中不获取变量值更新

2024-10-01 00:28:43 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Problem : jobCards value changes only once and then don't change even though the loops run again, Does not even change for once if assigned any value to it before while loop runs

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)

Tags: andself元素onlylenvaluechangeeven
2条回答

变量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)

我认为您的代码看起来很好,变量jobCards也会每次更新

totaljobs()重新运行长度始终相似的元素列表

例如,当您第一次滚动时,页面上会加载相同数量的元素。 因此元素数(len)总是相同的。

请尝试打印元素而不是元素的长度

相关问题 更多 >