Как добавлять в цикле с использованием Selenium

#python #django #selenium #for-loop #nested-loops

#python #django #селен #для цикла #вложенные циклы

Вопрос:

 def show(request):
    driver = webdriver.Chrome('/Users/colegulledge/desktop/chromedriver')
    driver.get('https://www.horrycounty.org/bookings')

    sleep(random()   2)
    date_form = driver.find_element_by_id('txtBookingDate')
    ##we are going to loop through the start date-end date in this input box

    def daterange(start_date, end_date):
        for n in range(int((end_date - start_date).days)):
            yield start_date   timedelta(n)

    start_date = date(2020, 1, 1)
    end_date = date(2020, 1, 3)

    def change_date_format(dt):
        return re.sub(r'(d{4})/(d{1,2})/(d{1,2})', '\2-\3-\1', dt)
     ##to change the format to month-day-year

    for single_date in daterange(start_date, end_date):
        days = (single_date.strftime(format("%Y/%m/%d")))
        days = (change_date_format(days))
        date_form.send_keys(days)
        sleep(2)
        ##Changing the date format and using send keys we put in in the inputbox



        for el in days:
            search = driver.find_element_by_css_selector("span.btn-primary")
            driver.execute_script("arguments[0].click();", search)
            sleep(2)

            inmate_info = driver.find_elements_by_class_name("cellLarge")
            rs = []
            for p in range(len(inmate_info)):
                rs.append(inmate_info[p].text.strip())



            date_form.clear()
    print(rs)

            ##the website keeps the previous date in the input box, so we must
            ##clear the input box and repeat the loop

    return HttpResponse(rs)
  

Поэтому всякий раз, когда я это делаю, rs возвращает только последний день записей.. Я считаю, что моя функция не добавляется в список, вместо этого она заменяет его. Это может быть очевидно, но я неопытен и работаю над своим первым крупным проектом. Есть идеи / предложения? Спасибо

Комментарии:

1. Перемещение rs = [] над циклом

2. вау, это было просто, спасибо, Майк!

Ответ №1:

(перемещение комментария в ответ)

Вы выполняете сброс rs в цикле, поэтому все предыдущие данные очищаются.

Чтобы собрать все данные, переместитесь rs = [] выше цикла:

 rs = []
for single_date in daterange(start_date, end_date):
   .......