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

Фотография

Работа с таблицами в IE


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

#1 *Angel*

*Angel*

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

  • Members
  • Pip
  • 41 сообщений
  • ФИО:*Angel*

Отправлено 11 апреля 2007 - 15:05

На странице есть таблица, в которую помещаются созданные объекты и кнопки управления этими объектами.
Имена объектов формируются динамически, поэтому по имени объекта отследить его наличие и нажать на кнопку управления нет возможности (мне так кажется :victory: ).
Можно ли по другому как-то достучаться до данных в таблице????? :acute: :crazy: :blush:

Приложение на asp.net

Я пыталась для кнопки управления объекта в цикле проходить вообще ВСЕ items и искать вначале объект, у которого classname=GridRow && innerText=имени объекта, а потом искать объект у которого innerText=имени объекта и innerHTML содержит javascript, т.к. у самого объекта кнопочки className пустой. Но не все объекты поддерживают свойство className, о чем мне и сообщил ТестКомплит.

Я приложила картинку таблички, если это поможет

Прикрепленные файлы

  • Прикрепленный файл  TMTable.JPG   11,34К   55 Количество загрузок:

  • 0

#2 Dmitry N

Dmitry N

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

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 12 апреля 2007 - 06:45

Здравствуйте.

Можете воспользоваться методом Find для поиска подходящего окна. Этот метод позволяет указать одно или несколько свойств, по которым должен производиться поиск. Подробно о нём можете почитать в разделе справки 'Find Method'.

Если есть проблемы с использованием этого метода, пришлите сюда код HTML объекта, с которым хотите работать (значение его свойства outerHTML) и скажите, на каком языке пишете тест.
  • 0
С уважением,
Дмитрий

#3 *Angel*

*Angel*

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

  • Members
  • Pip
  • 41 сообщений
  • ФИО:*Angel*

Отправлено 12 апреля 2007 - 09:35

да, я уже нашла этот чудестный метод :acute:

Tbl = Pg.NativeWebObject.Find ("className", "Grid");
   Log.Message (Tbl.Name);
   for(i = 1; i < Tbl.rows.length; i++)
  {
      if (Tbl.rows(i).cells(0).innerText==nameTestRunner)
      {
          Tbl.rows(i).cells(2).Click(10,10);
          isFindTR=true;
       } 
  }
я нахожу строчку, в которой имя объекта совпадает с нужным и после этого хочу начать на надпись в [i,2] ячейке таблицы. Но нажатия не происходит. Ошибки тоже не выдает. Не могу понять в чем дело :victory:
  • 0

#4 *Angel*

*Angel*

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

  • Members
  • Pip
  • 41 сообщений
  • ФИО:*Angel*

Отправлено 13 апреля 2007 - 08:10

Победила я таблицу :hi: , напишу, может, кому-то пригодится....

Дело было в том, что на ячейку таблицы не было повешено ничего на onclick.
Поэтому надо было брать сожержимое ячейки, то есть FirstChild (Child в ячейке был один).
Так что в коде надо было поменять только чуть-чуть

Tbl = Pg.NativeWebObject.Find ("className", "Grid");
   Log.Message (Tbl.Name);
   for(i = 1; i < Tbl.rows.length; i++)
  {
      if (Tbl.rows(i).cells(0).innerText==nameTestRunner)
      {
          Tbl.rows(i).cells(2).FirstChild.Click(12,5);
          isFindTR=true;
          break;
       }
   }
Всем удачи в борьбе с таблицами!!!
  • 0

#5 Dmitry N

Dmitry N

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

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 13 апреля 2007 - 18:17

Здравствуйте.

На самом деле, здесь всё немного хитрее. Дело в том, что вы вызываете метод Click нативного объекта на веб странице, а не объекта-обёртки, используемого TestComplete'ом. TC "оборачивает" все нативные объекты на тестируемой странице и добавляет им свои свойства и методы, в том числе и метод Click. Для того, чтобы вызвать этот ТС'шный метод Click, вам надо получить соответствующий объект-обёртку. Сделать это можно также с помощью метода Find.

 Tbl = Pg.NativeWebObject.Find ("className", "Grid");
  Log.Message (Tbl.Name);
  for(i = 1; i < Tbl.rows.length; i++)
 {
     if (Tbl.rows(i).cells(0).innerText==nameTestRunner)
     {
         var nativeObj = Tbl.rows(i).cells(2);
         var tcObj = Pg.NativeWebObject.Find("uniqueId", nativeObj.uniqueId);
         tcObj.Click(10, 10);
         isFindTR=true;
      } 
 }

  • 0
С уважением,
Дмитрий


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

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