#python #selenium #selenium-chromedriver
#python #selenium #selenium-chromedriver
Вопрос:
У меня есть csv с 4 столбцами, которые я конвертирую в фрейм данных pandas, а затем превращаю каждый столбец в список. Я пытаюсь перебирать каждый список и извлекать данные на основе идентификатора. В зависимости от того, какой это идентификатор, он будет выбирать из 1 из 2 выпадающих списков. Я пытаюсь выработать логику настройки переменных sale_type и form_code, которые будут разными для каждой итерации столбца.
С помощью приведенного ниже кода он автоматически устанавливает form_code = 2 и sale_type =’Push Notification’ после завершения итерации по столбцу push-уведомлений он возвращает form_code = 1 и sale_id в Nan, а затем останавливается.
Список push-уведомлений sale_id является последним списком и должен быть повторен последним.
def get_report_data(self):
("Gathering Report Data...")
current_date = helpers.currentDate
report_results = []
data = pd.read_csv(r'C:UsersrfordDesktopsale_ids.csv')
everyone_ids = data['Everyone'].tolist()
dd_ids = data['Daily Deal'].tolist()
targeted_ids = data['Targeted'].tolist()
push_ids = data['Push Notification'].tolist()
for sale_id, sale_id, sale_id, sale_id in zip(everyone_ids, dd_ids, targeted_ids, push_ids):
if sale_id in everyone_ids:
form_code = 1
sales_type = "Everyone"
elif sale_id in dd_ids:
form_code = 1
sales_type = "Daily Deal"
elif sale_id in targeted_ids:
form_code = 2
sales_type = "Targeted"
else:
form_code = 2
sales_type = "Push Notification"
helpers.driver.find_element_by_xpath('/html/body/form[{}]/div/select/option[@value={}]'.format(form_code, sale_id)).click()```
Ответ №1:
Ваш цикл ‘for’ выбросит все, кроме последнего списка. Помните, что zip доставляет одну вещь из каждого списка в каждом цикле. Нет ничего постыдного в том, чтобы делать это как 4 отдельных цикла ‘for’, но если вы действительно хотите, вы можете сделать:
for form_code, sales_type, idlist in (
( 1, "Everyone", everyone_ids ),
( 1, "Daily Deal", dd_ids ),
( 2, "Targets", targeted_ids ),
( 2, "Push Notification", push_ids ) ):
for sale_id in idlist:
helpers.driver.find_element_by_xpath( ... etc ... )
Комментарии:
1. это работает, спасибо, но сейчас я сталкиваюсь со следующей проблемой: