Перейти к содержимому

Фотография

TestComplete + Excel - как заставить забирать все данные из Excel файл


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 10

#1 FreeMan1

FreeMan1

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 27 ноября 2012 - 00:49

Добрый день, товарищи тестеры!
Помогите начинающему автоматизатору.

function Test2()
{
var browser;
var panel;
var form;
var textbox;
var passwordBox;


InputData = DDT.ExcelDriver("C:\\test\\1.xlsx", "Sheet1", true);
while(!InputData.EOF())
{
Browsers.Item(btIExplorer).Navigate("http://mail.ru/");
browser = Aliases.browser;
panel = browser.pageMailRu.panelMainWrapClearfix.panelLayoutClearfix;
panel.panelLayoutContent.panelLayoutContentWrapClearfix.panelLayoutCentercol.panelLayoutCentercolWrap.panelNews.panelNewsWrap.panelContentTabNewsTabsRegional.panelSlot3072.panelNewsListItemNewsListItemMai.linkN1042232532.HoverMouse(225, 19);
form = panel.panelLayoutLeftcol.panelMailbox.panelJsMailboxAuth.formAuth;
textbox = form.panelMailboxAuthLayoutRowMailbox1.panelMailboxAuthLayoutRowColMail.labelWMailboxLogin.textboxMailboxLogin;
textbox.SetText(InputData.value("Data"));
panel = form.panelMailboxAuthLayoutRowMailbox;
passwordBox = panel.panelMailboxAuthLayoutRowColMail.labelWMailboxPassword.passwordboxMailboxPassword;
passwordBox.Click();
passwordBox.SetText(InputData.value("password"));
panel.panelMailboxAuthLayoutRowColMail1.submitbuttonMailboxAuthButton.Click();
browser.pageMailRu1.Wait();
InputData.Next();
}
}

Следующий скрипт пытается залогиниться на майл ру забирая логин ("Data") и пароль ("password") из файла экселя.
Он работает отлично, но нужно его усовершенствовать.

Вот строчка - passwordBox = panel.panelMailboxAuthLayoutRowColMail.labelWMailboxPassword.passwordboxMailboxPassword;

в ней указан локатор для поля пароля.

Как этот локатор грузить из эксель файла?

В идеале есть эксель файл со всеми локаторами и данными, хочу что бы все бралось из эксель файла.

Посоветуйте как решить данную задачу. Спасибо.
  • 0

#2 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 27 ноября 2012 - 06:57

Для конвертации строки "Aliases.browser.blahblahblah" в собственно объект Aliases.browser.blahblahblah нужно использовать eval:
var obj = eval("Aliases.browser.blahblahblah");
Т.е. в Вашем случае будет что-то вроде:
var passwordBox = eval(InputData.value("locator"));

  • 1

#3 FreeMan1

FreeMan1

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 27 ноября 2012 - 21:57

Для конвертации строки "Aliases.browser.blahblahblah" в собственно объект Aliases.browser.blahblahblah нужно использовать eval:

var obj = eval("Aliases.browser.blahblahblah");
Т.е. в Вашем случае будет что-то вроде:
var passwordBox = eval(InputData.value("locator"));


Огромное спасибо! помогло.
  • 0

#4 FreeMan1

FreeMan1

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 28 ноября 2012 - 00:10

Еще один вопрос. Стоит такая задача (на мой взгляд не нужная, но решение требуется) - что бы тест (его джава/вибискрипт код) хранился в эксель файле, а тесткомплит мог его грузить.

Например есть две функции - 1) логин
2) логаут

Создаю тест - вызываю эти функции сначала логин а потом логаут. Но я хочу что бы сами функции хранились в эксель файле ( например на разных страницах, а джава код в первой ячейке).

Как это реализовать?
  • 0

#5 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 28 ноября 2012 - 07:05

Так же, eval'ом:
var oExcel = Sys.OleObject("Excel.Application");
var oWorkbook = oExcel.Workbooks.Open("C:\\functions.xlsx");

eval(oWorkbook.Sheets("Sheet1").Cells(1, 1).Text); // Загружаем функцию login
login();

eval(oWorkbook.Sheets("Sheet2").Cells(1, 1).Text); // Загружаем функцию logout
logout();

  • 1

#6 FreeMan1

FreeMan1

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 29 ноября 2012 - 03:08

Так же, eval'ом:

var oExcel = Sys.OleObject("Excel.Application");
var oWorkbook = oExcel.Workbooks.Open("C:\\functions.xlsx");

eval(oWorkbook.Sheets("Sheet1").Cells(1, 1).Text); // Загружаем функцию login
login();

eval(oWorkbook.Sheets("Sheet2").Cells(1, 1).Text); // Загружаем функцию logout
logout();


Пишу вот такой скрипт -

function test1 ()

{
var oExcel = Sys.OleObject("Excel.Application");
var oWorkbook = oExcel.Workbooks.Open("C:\\test\\functions.xlsx");

eval(oWorkbook.Sheets("Sheet1").Cells(1, 1).Text); // Загружаем функцию login
login();
}

А вот в таком виде пишу в эксель в первую ячейку саму функцию (в тест комплите работает) -

function login()
{
  var browser;
  Browsers.Item(btIExplorer).Navigate("http://drom.ru/");
  browser = Aliases.browser;
  browser.pageDromRu.panelMain0.panelMain1.panelMain2.tableMenu.cellHover.panel.linkAutoDromRu.Click();
  browser.pageHttpAutoDromRu.Wait();
}


Ну и собственно в таком виде не работает. Где я допускаю ошибку?
  • 0

#7 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 29 ноября 2012 - 08:43

Что значит "не работает"? Запостите сюда полный текст и Additional Information ошибки из лога.

Навскидку - попробуйте заменить в Excel'е Navigate("http://drom.ru/") на Run("http://drom.ru/"). Navigate подразумевает, что браузер уже запущен, иначе будет ошибка; а Run сам запускает браузер.
  • 1

#8 FreeMan1

FreeMan1

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 29 ноября 2012 - 10:25

Что значит "не работает"? Запостите сюда полный текст и Additional Information ошибки из лога.

Навскидку - попробуйте заменить в Excel'е Navigate("http://drom.ru/") на Run("http://drom.ru/"). Navigate подразумевает, что браузер уже запущен, иначе будет ошибка; а Run сам запускает браузер.


Прямо в точку. Поменял Navigate на Run все заработало. Спасибо огромное!
  • 0

#9 FreeMan1

FreeMan1

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 06 декабря 2012 - 02:42

function Test1()                                                                  
{
  var browser;
  var panel;
  var form;
  var textbox;
  var passwordBox;
  
  InputData = DDT.ExcelDriver("C:\\test\\1.xlsx", "Sheet1", true);                
  while(!InputData.EOF())
  {
  Browsers.Item(btIExplorer).Navigate("http://mail.ru/");
  browser = Aliases.browser;
  panel = eval(InputData.value("panel"));
  form = eval(InputData.value("form"));
  textbox = eval(InputData.value("textbox")); 
  textbox.SetText(InputData.value("data"));  
  panel = eval(InputData.value("panel2"));
  passwordBox = eval(InputData.value("passi"));
  passwordBox.Click();
  passwordBox.SetText(InputData.value("password"));
  panel.panelMailboxAuthLayoutRowColMail1.submitbuttonMailboxAuthButton.Click();
  browser.pageMailRu1.Wait();
  InputData.Next();
  }
}

все запихал в эксель файл, но вот это место не удается.
panel.panelMailboxAuthLayoutRowColMail1.submitbuttonMailboxAuthButton.Click(); // нажатие на кнопку войти.

как это дело запихнуть в эксель?
  • 0

#10 Kissmybass

Kissmybass

    Активный участник

  • Members
  • PipPip
  • 98 сообщений


Отправлено 13 декабря 2012 - 14:21

еще как вариант используй класс для работы с екселем, который лежит на просторах паутины
  • 0

#11 Genka

Genka

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 18 декабря 2012 - 07:45

еще как вариант используй класс для работы с екселем, который лежит на просторах паутины


Речь, видимо, об этом?
http://autotestgroup...terials/17.html
  • 0

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных