Как проскролить таблицу
#1
Отправлено 27 января 2009 - 08:35
ТС 6.51, Дельфи-скрипт, веб
Суть в следующем: есть таблица, у которой два скролбара - вниз и в сторону. Причем эти скролбары не вычленяются Object Explorer'ом.
получается, я могу найти только объект следующего вида:
Sys.Process('iexplore').Page(ляляля=').Panel('section_ref').Table(0).Cell(1, 0).Panel(0)
Прокрутить вниз эту таблицу я могу с помощью MouseWheel, а вот в сторону никакой wPosition не помогает (потому что скролбара как бы нет), нажимать 20 раз Keys('[ Left ]') тоже не очень прикольно.
Как быть, кто сталкивался?
#2
Отправлено 27 января 2009 - 09:29
Учитывая то, что вы работаете с веб приложением, понять какой у вас scroll bar и как с ним работать невозможно, так как все контролы на веб страницах это просто набор тэгов. Попробуйте записать скрипт, который перетаскивает этот scroll bar из одной позиции в другую, и запостите его сюда.
Дмитрий
#3
Отправлено 28 января 2009 - 09:34
Здравствуйте.
Учитывая то, что вы работаете с веб приложением, понять какой у вас scroll bar и как с ним работать невозможно, так как все контролы на веб страницах это просто набор тэгов. Попробуйте записать скрипт, который перетаскивает этот scroll bar из одной позиции в другую, и запостите его сюда.
Вот прокрутка вниз и вверх, а потом перетаскивание скролбара в стороны (промежая кликами по таблице):
procedure Test1; var p1 : OleVariant; var w1 : OleVariant; var w2 : OleVariant; var w3 : OleVariant; begin p1 := Sys.Process('iexplore'); p1.IEFrame(1).Tab(Microsoft Internet Explorer предоставлен: ').Window('Shell DocObject View').Window('Internet Explorer_Server').MouseWheel(-5); Delay(3400); w1 := p1.Page('http://ляляля).Fieldset('fs_searchResults').Panel('div_searchResults').Panel('depo_acc_ref').Table(0).Cell(1, 0).Panel(0); w2 := w1.Panel(0).Table(0); w3 := w2.Cell(4, 0); w3.Click(84, 7); w3.MouseWheel(-3); Delay(1428); w3.MouseWheel(4); Delay(1353); w3.MouseWheel(-5); Delay(5405); w2.Cell(5, 0).Click(82, 7); Delay(2883); w1.Drag(1033, 235, 3, -93); Delay(2789); w1.Drag(1037, 138, -6, 76); w2.Cell(6, 0).Click(83, 11); Delay(4144); w1.Drag(696, 297, 198, 5); Delay(3151); w1.Drag(910, 300, -276, 1); end;
Как видно, Panel(0) - все что можно подвигать.
#4
Отправлено 28 января 2009 - 12:51
А запостите теперь, пожалуйста, результаты следующего скрипта в формате MHT. Этот скрипт запостит часть HTML кода вашей страницы, возможно это подскажет нам решение. Не забудьте поправить скрипт, чтобы он ссылался на правильные объекты.
procedure Test1; var p1 : OleVariant; var w1 : OleVariant; var w2 : OleVariant; var w3 : OleVariant; begin p1 := Sys.Process('iexplore'); p1.IEFrame(1).Tab(Microsoft Internet Explorer предоставлен: ').Window('Shell DocObject View').Window('Internet Explorer_Server').MouseWheel(-5); Delay(3400); w1 := p1.Page('http://ляляля).Fieldset('fs_searchResults').Panel('div_searchResults').Panel('depo_acc_ref').Table(0); Log.Message(w1.FullName, w1.outerHTML); end;
Дмитрий
#5
Отправлено 30 января 2009 - 10:48
Здравствуйте.
А запостите теперь, пожалуйста, результаты следующего скрипта в формате MHT. Этот скрипт запостит часть HTML кода вашей страницы, возможно это подскажет нам решение. Не забудьте поправить скрипт, чтобы он ссылался на правильные объекты.
Сделала, но ничего в полученном коде не нашла. Программисты говорят, что скролбар генерит сам браузер, и что его никак не выцепить. Даже не знаю, как двигать то теперь таблицу в стороны...
#6
Отправлено 30 января 2009 - 11:16
А может пример страницы сможете дать?
Дмитрий
#7
Отправлено 17 марта 2009 - 14:58
Здравствуйте.
А может пример страницы сможете дать?
Совсем заработалась :)
Я не знаю, как я могу дать пример страницы. Обычная таблица (точнее много вложенных Table и Panel). Браузер (ИЕ7) автоматически генерит скробар - если много столбцов или растягиваю столбцы вширь.
#8
Отправлено 18 марта 2009 - 06:15
Если это полоса прокрутки самого Internet Explorer'а, то ТС должен автоматически прокручивать страницу при попытке сделать что-нибудь с объектом, который находится в невидимой части. Если вам надо сделать объект видимым, но никаких действий вы с ними делать не хотите, то можете позвать метод scrollIntoView с параметром false (или true, здесь неважно) этого объекта.
Дмитрий
#9
Отправлено 18 марта 2009 - 06:18
Если это полоса прокрутки самого Internet Explorer'а, то ТС должен автоматически прокручивать страницу при попытке сделать что-нибудь с объектом, который находится в невидимой части. Если вам надо сделать объект видимым, но никаких действий вы с ними делать не хотите, то можете позвать метод scrollIntoView с параметром false (или true, здесь неважно) этого объекта.
Дмитрий
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных