Я пытаюсь продемонстрировать запуск двух циклов for в Robot Framework для обработки различных значений в этих циклах и записи значений из переменной списка в файл Excel.
Этот простой тест для демонстрации в настоящее время проходит и действительнорегистрирует разные значения из этих разных циклов, но пока не ведет себя правильно, когда дело доходит до записи в файл Excel.
Я создал переменную списка @ {valueslist}, содержащую 3 значения: Значение списка 0 , Значение списка 1 и Значение списка 2 .
Идея состояла бы в том, чтобы записать значение Listvalue 0 в строку 5 Excel, значение Listvalue 1 в строку 6 Excel и значение List Listue 2 в строку 7. Excel. Все строки в столбце № 0. Лист в файле Excel назван Listvalues .
Почему строки 5-7, а не, например, 0-2 в начале файла Excel?
Основная идея здесь состоит в том, чтобы продемонстрировать разные значения, обрабатываемые разными циклами, потому что значения для @ {valueslist} и значения для строк Excel могут отличаться во многих случаях позже, как в этом случае демонстрации этого. Было бы проще писать в Excel строки 0-2, потому что значения в этом случае такие же, как INDEX в диапазоне цикла. На самом деле это уже работает, но сейчас я пытаюсь проверить различные значения для строк Excel (INDEX) и i-values из @ {valueslist}.
В настоящее время моя проблема заключается в том, что ожидаемые строки 5-7 в Excelстолбец 0 записывается и сохраняется как новый файл Excel (сохранение как новый файл Excel работает), но для каждой строки от 5 до 7 записывается значение Listvalue 2 (тогда значение i равно 2) вместо значений i, равных 0-2Listvalue 0, Listvalue 1 и Listvalue 2, поэтому только последнее последнее значение i записывается в Excel три раза и не отличается от значения для каждой строки, как ожидалось, поэтому записывающая часть работает неправильно, хотя ожидаемые строки записываются. Просто с неправильными значениями, потому что Listvalue 2 повторяется три раза. Должно быть, эти два цикла работают не так, как ожидалось.
В Robot я сначала открываю файл Excel с именем Exceldemobase.xls (используется ExcelLibrary), используемый в качестве файла шаблона Excel. Затем у меня есть цикл с именем Основной цикл значений Excel , который имеет текущий диапазон от 3 до 6. Значение ИНДЕКСА там соотносится с номерами строк Excel, хотя не напрямую с такими же числовыми значениями, но ИНДЕКС предназначен для обработки строк Excel.
В главном цикле значений Excel есть еще один цикл, включенный в качестве ключевого слова с именем Внутренний цикл значений Excel . Этот цикл зацикливает значения $ {i}, и я соотносится с индексом @ {valueslist}. Как и в этом списке, есть три индекса: 0, 1, 2 (Listvalue 0, Listvalue 1, Listvalue 2 - фактические значения в этом списке).
После выполнения циклов появляется всплывающее окно выполнения паузы, предоставленноеDialogs-библиотека используется для запроса подтверждения пользователя перед записью в Excel.
My Robot Framework-code:
*** Settings ***
Library String
Library Dialogs
Library ExcelLibrary
*** Variables ***
${INDEX} 0
${i} 0
@{valueslist} Listvalue 0 Listvalue 1 Listvalue 2
*** Keywords ***
Excel Values Main Loop
: FOR ${INDEX} IN RANGE 3 6
\ Set Suite Variable ${INDEX}
\ Excel Values Inner Loop
\ Log INDEX value logged in (Excel Values Main Loop) is currently: ${INDEX}
Excel Values Inner Loop
: FOR ${i} IN RANGE 0 3
\ Log Value of i logged in (Excel Values Inner Loop) is currently: ${i}
\ Log Listvalue logged in (Excel Values Inner Loop) is currently: @{valueslist}[${i}]
\ Put String To Cell Listvalues 0 ${INDEX+1} @{valueslist}[${i}]
Set Suite Variable ${i}
Excel Values Dialog
Pause Execution Please press OK to write values to Excel rows
Excel Values
[Documentation] This is expected to write Listvalue 0, Listvalue 1 and Listvalue 2 (only one value per row) from variable @{valueslist} to Excel-rows 5, 6 and 7.
...
Open Excel C:/Programming/Robot_Projects/ExcelValuesDemo/Exceldemobase.xls
Excel Values Main Loop
Pause Execution Press OK to save next set of values to Excel
Save Excel C:/Programming/Robot_Projects/ExcelValuesDemo/Exceldemofilled.xls
Я ожидал, что выходные данные для строк Excel 5-7 будут такими:
Listvalue 0 (Ожидается для Excelстрока 5)
Listvalue 1 (ожидается для Excel строки 6)
Listvalue 2 (ожидается для Excel строки 7)
Но фактические значения были:
Listvalue 2 (Записывается в строку Excel 5)
Listvalue 2 (Записывается в строку Excel 6)
Listvalue 2 (Записывается в строку 7 Excel)
Я думаю, что значение i равно 2 наконец цикла в Значения Excel Внутренний цикл , тогда это значение передается в каждую строку, но я не смог исправить эти два цикла, чтобы был ожидаемый результат. Когда я смотрю на журнал, я вижу, что значения i 0, 1 и 2 на самом деле записываются в журнал, поэтому увеличение значения i между 0 и 2 выполняется во время цикла, как и ожидалось, но по какой-то причине только последнее значение равно 2 (фактическое значение из списка для 2будучи Listvalue 2 затем) записывается в файл Excel.