【问题标题】:Variable value don't get update in while loop with python - selenium变量值不会在 Python 的 while 循环中得到更新 - selenium
【发布时间】:2021-11-24 11:45:17
【问题描述】:

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

问题: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)

【问题讨论】:

    标签: python selenium loops while-loop selenium-chromedriver


    【解决方案1】:

    我认为你的代码看起来不错,变量 jobCards 每次也会更新。

    totaljobs() 返回长度相似的元素列表。

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

    您能否尝试打印元素而不是元素的长度。

    【讨论】:

      【解决方案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)
      

      【讨论】:

        猜你喜欢
        • 2019-03-05
        • 2015-11-04
        • 1970-01-01
        • 1970-01-01
        • 2019-08-01
        • 1970-01-01
        • 1970-01-01
        • 2022-09-23
        • 1970-01-01
        相关资源
        最近更新 更多