
TestComplete и Excel - как получить значение ячейки
#1
Отправлено 19 января 2012 - 11:44
Помогите новичку в освоении этого нелегкого процесса - написания скриптов.
Есть файл Excel, содержащий таблицу из 3х колонок и 1000 строк.
Задача состоит в том, чтобы в блокнот записать значения ячеек из строки с номером, полученным случайным образом.
Я пробовала извлечь значения ячеек при помощи DDT-драйвера, в результате получаю только первую строку:
function Test()
{
var ddtExcel = DDT.ExcelDriver(Project.Path + "\\Stores\\fiogen.xlsx", "fiogen", true);
var s1, s2, s3;
var w1 = Sys.Process("notepad").Form("Безымянный — Блокнот");
var w2 = w1.Window("Edit", "", 1)
s1 = ddtExcel.Value("fam");
s2 = ddtExcel.Value("name");
s3 = ddtExcel.Value("otc");
w2.Keys(s1 + ' ' + s2 + ' ' + s3 + '[Enter]');
Log.Message(s1+ ' ' + s2 + ' ' + s3);
DDT.CloseDriver(ddtExcel.Name);
}
А вот как получить значения из случайной строки - понять не могу...
Может вместо этого нужно что-то другое использовать?
Помогите, плиз.
#2
Отправлено 19 января 2012 - 11:57
Добрый день, уважаемые.
Помогите новичку в освоении этого нелегкого процесса - написания скриптов.
Есть файл Excel, содержащий таблицу из 3х колонок и 1000 строк.
Задача состоит в том, чтобы в блокнот записать значения ячеек из строки с номером, полученным случайным образом.
Я пробовала извлечь значения ячеек при помощи DDT-драйвера, в результате получаю только первую строку:
function Test()
{
var ddtExcel = DDT.ExcelDriver(Project.Path + "\\Stores\\fiogen.xlsx", "fiogen", true);
var s1, s2, s3;
var w1 = Sys.Process("notepad").Form("Безымянный — Блокнот");
var w2 = w1.Window("Edit", "", 1)
s1 = ddtExcel.Value("fam");
s2 = ddtExcel.Value("name");
s3 = ddtExcel.Value("otc");
w2.Keys(s1 + ' ' + s2 + ' ' + s3 + '[Enter]');
Log.Message(s1+ ' ' + s2 + ' ' + s3);
DDT.CloseDriver(ddtExcel.Name);
}
А вот как получить значения из случайной строки - понять не могу...
Может вместо этого нужно что-то другое использовать?
Помогите, плиз.
Насколько помню в TC7 не было возможности обратиться к конкретной записи. Можно последовательно считать все, в какой-нибудь массив и уже потом случайным образом выбирать данные для записи.
Может, конечно, в TC8 что изменилось.
#3
Отправлено 19 января 2012 - 13:36
Но я бы вам посоветовала работать с Excel через его COM-объект Excel.Application. Как-то так:
// Disclaimer: код не проверен var Excel = Sys.OleObject("Excel.Application") Excel.Visible = true; Excel.Workbooks.Open("C:\\MyFile.xls"); rowCount = Excel.ActiveSheet.UsedRange.Rows.Count; row = <сгенерировать рандомное число от 1 до rowCount>; strValue = Excel.Cells(row, 1).Value.toString();
#4
Отправлено 19 января 2012 - 17:55
http://autotestgroup...terials/17.html
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#5
Отправлено 19 января 2012 - 18:01
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#6
Отправлено 20 января 2012 - 06:21
А хотя перечитал пост... Судя по всему, вам достаточно просто добавить переход на следующую строку при чтении таблицы. Посмотрите примеры работы с DDT вот здесь http://tctutorial.ru/datadriven
Я сделала по аналогии с примером из указанного Вами учебника, в итоге у меня последовательно выводились все записи из файла, а мне нужна одна, причем не какая то конкретная, а случайная.
Функцию для получения случайного числа из диапазона (m,n) нашла - ее значение будет являться номером нужной строки. Теперь думаю, в какое место в коде ее "присобачить". Попробую копать в сторону, предложенную modbear, вдруг получится...
P.S. Хотела сказать "спасибо" за учебник по ТС - для меня он оказался очень полезен.
#7
Отправлено 20 января 2012 - 08:00
var Exl = Sys.OleObject("Excel.Application");
var rowCount;
var strV1, strV2, strV3;
Exl.Visible = false;
Exl.Workbooks.Open("С:\\fiogen.xlsx");
rowCount = Exl.ActiveSheet.UsedRange.Rows.Count;
row = Math.floor( Math.random() * rowCount ) + 1;
strV1 = Exl.Cells(row, 1).Value.toString();
strV2 = Exl.Cells(row, 2).Value.toString();
strV3 = Exl.Cells(row, 3).Value.toString();
Log.Message(strV1 + ' ' + strV2 + ' ' + strV3)
и каждый раз при запуске в логе имею случайную строку из файла...Супер!
Всем спасибо!
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных