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

Фотография

WR+ASP.Net web app не распознается дерево в IE


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

#1 Fib

Fib

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

  • Members
  • Pip
  • 24 сообщений
  • Город:Minsk

Отправлено 28 сентября 2005 - 17:30

Я столкнулась со следующей проблемой, если кто-нибудь знает решение отзовитесь. :crazy:
Итак, есть дерево, которое является объектом кастомерского класса (одним из свойств этого класса явлвется объект стандартного класса TreeView). Т.е. дерево в моем приложении (это web application) – это custom object. Проблема заключается в том, что WinRunner не ловит (не видит) это дерево как отдельный объект в IE. Когда пытаешься распознать дерево с помощью GUI Spy, то выделяется внешняя html таблица (Spy так и пишет, что он распознал только html_table), в которой содержится не только это злосчастное дерево, но и практически все, что есть у меня на страничке, контролы и даже другие таблицы. Я также пробовала добавить это дерево как кастомерский контрол через GUI Map Configuration, там происходит то же самое, т.е. когда пытаешься распознать дерево из окна “Add Class”, то тоже ловится только html_table. Более того, при записи скрипта, клики по дереву даже не записываются, т.е. даже покоординатные клики не записываются и, естественно, никаких новых объектов в GUI Map Editor автоматически не добавляется. Привожу исходный код класса моего дерева (только кусочек – самое начало).

/// This class represents TreeViewX control. It is based on MS TreeView
/// control (from MS IE Web Controls bundle).
public class TreeViewX : UserControl
{
protected Microsoft.Web.UI.WebControls.TreeView TV;
private CommandGroup commandGroup;
...
далее идут еще другие свойства и методы класса

Подытоживаю, проблема не в том, что я не могу замапить кастомерский объект в стандартный или определить ему свои новые свойства, что позволяет делать GUI Map Configuration, а проблема заключается в том, что WinRunner вообще не видит моего деревца в IE как отдельный объект, как контрол.
Приложение написано на ASP.Net. Может мне нужны какие-либо add-ins еще, кроме встроенных?
Я использую WinRunner 7.5 и 7.6
  • 0

#2 Dmitry_NJ

Dmitry_NJ

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 3 122 сообщений
  • ФИО:Дмитрий Шевченко
  • Город:New Jersey, USA

Отправлено 28 сентября 2005 - 19:08

Приложение написано на ASP.Net. Может мне нужны какие-либо add-ins еще, кроме встроенных?

Вам нужны не дополнительные WR add-in'ы, вам нужен вообще другой инструмент, например тот же QTP с .NET add-in'ом. Просто потому, что WR не поддерживал, не поддерживает и не будет поддерживать работу с .NET приложениями.
  • 0
Дмитрий Шевченко

HP Software

#3 Fib

Fib

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

  • Members
  • Pip
  • 24 сообщений
  • Город:Minsk

Отправлено 29 сентября 2005 - 08:55

Дмитрий, спасибо за ответ, но я хотела бы возразить. Дело в том, что у меня написано уже много тестов для моего web application (ASP.Net) и все было просто великолепно (все контролы распозновались), пока в этом приложении не поменяли дерево (сначала просто у нас было не дерево как таковое -- оно не экспандилось и не коллапсилось -- и работала я, передвигаясь по веточкам, которые распозновались как General element и я просто на них кликала). А теперешнее дерево -- это dhtml control и он билдается в рантайме, используя java script, т.е. строится динамически (это как мне объяснили наши девелоперы). Видимо, в этом причина, а не в том, что WinRunner вообще не работает с ASP.Net приложениями. В принципе, исход ситуации ясен -- надо использовать другую тулзу. эээээх :crazy:
  • 0

#4 Mike

Mike

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 1 079 сообщений
  • Город:Москва

Отправлено 29 сентября 2005 - 09:02

Если Вы пришлёте кусок html где описывается этот контрол, можно будет сказать, чего именно не хватает WR, и каким тулом его можно записать. А то, что это "dhtml-контрол, генерируемый java-script" мало о чём говорит...
  • 0
Best regards,
Майк.

#5 Fib

Fib

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

  • Members
  • Pip
  • 24 сообщений
  • Город:Minsk

Отправлено 29 сентября 2005 - 09:41

Это то, что я вижу через View Source для деревца.

<?IMPORT NAMESPACE=TVNS IMPLEMENTATION="/webctrl_client/1_0/treeview.htc" />
<tvns:treeview id="_ctl0__ctl3_TV" class="tree" defaultStyle="border-left:solid 1 #F1F1F1;border-right:solid 1 #F1F1F1;border-bottom:solid 1 #F1F1F1;font-family:Tahoma;font-size:12px;border-top:solid 1 #F1F1F1;" hoverStyle="background-color:#D9D9D9;border-bottom:solid 1 #888888;border-left:solid 1 #888888;border-right:solid 1 #888888;border-top:solid 1 #888888;color:#000000;cursor:hand;" selectedStyle="background-color:#CCCCFF;border-bottom:solid 1 #888888;border-left:solid 1 #888888;border-right:solid 1 #888888;border-top:solid 1 #888888;color:#000000;cursor:default;" selectedNodeIndex="0" HelperID="___ctl0__ctl3_TV_State__" systemImagesPath="/Eprocurement.Test/Images/treeimages/" onexpand="java script: if (this.clickedNodeIndex != null) this.queueEvent('onexpand', this.clickedNodeIndex)" oncollapse="java script: if (this.clickedNodeIndex != null) this.queueEvent('oncollapse', this.clickedNodeIndex)" oncheck="java script: if (this.clickedNodeIndex != null) this.queueEvent('oncheck', this.clickedNodeIndex)" onselectedindexchange="java script: if (event.oldTreeNodeIndex != event.newTreeNodeIndex) this.queueEvent('onselectedindexchange', event.oldTreeNodeIndex + ',' + event.newTreeNodeIndex)" style="height:100%;width:100%;">
<tvns:treenode Expanded="True" Selected="true" NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="Tasks" ImageUrl="/Eprocurement.Test/Images/node_project_collapsed.gif" ExpandedImageUrl="/Eprocurement.Test/Images/node_project_expanded.gif">
Tasks<tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="SupplySummary" ImageUrl="/Eprocurement.Test/Images/node_document_collapsed.gif" ExpandedImageUrl="/Eprocurement.Test/Images/node_document_expanded.gif">
Supply Summary<tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="SupplySummaryDraft" ImageUrl="/Eprocurement.Test/Images/node_state_draft.gif">
Draft
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="SupplySummaryPendingApproval" ImageUrl="/Eprocurement.Test/Images/node_state_pending_approval.gif">
Pending Approval
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="SupplySummaryCancelled" ImageUrl="/Eprocurement.Test/Images/node_state_cancelled.gif">
Cancelled
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="SupplySummaryPendingConfirmation" ImageUrl="/Eprocurement.Test/Images/node_state_pending_confirmation.gif">
Pending Confirmation
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="SupplySummaryDeclined" ImageUrl="/Eprocurement.Test/Images/node_state_declined.gif">
Declined
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="SupplySummaryConfirmed" ImageUrl="/Eprocurement.Test/Images/node_state_confirmed.gif">
Confirmed
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="SupplySummaryInProgress" ImageUrl="/Eprocurement.Test/Images/node_state_inprogress.gif">
In Progress
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="SupplySummaryCompleted" ImageUrl="/Eprocurement.Test/Images/node_state_completed.gif">
Completed
</tvns:treenode>
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="PurchaseOrder" ImageUrl="/Eprocurement.Test/Images/node_document_collapsed.gif" ExpandedImageUrl="/Eprocurement.Test/Images/node_document_expanded.gif">
Purchase Order<tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="PurchaseOrderDraft" ImageUrl="/Eprocurement.Test/Images/node_state_draft.gif">
Draft
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="PurchaseOrderPendingApproval" ImageUrl="/Eprocurement.Test/Images/node_state_pending_approval.gif">
Pending Approval
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="PurchaseOrderCancelled" ImageUrl="/Eprocurement.Test/Images/node_state_cancelled.gif">
Cancelled
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="PurchaseOrderPendingConfirmation" ImageUrl="/Eprocurement.Test/Images/node_state_pending_confirmation.gif">
Pending Confirmation
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="PurchaseOrderDeclined" ImageUrl="/Eprocurement.Test/Images/node_state_declined.gif">
Declined
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="PurchaseOrderPendingDelivery" ImageUrl="/Eprocurement.Test/Images/node_state_waiting_delivery.gif">
Pending Delivery
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="PurchaseOrderCompleted" ImageUrl="/Eprocurement.Test/Images/node_state_completed.gif">
Completed
</tvns:treenode>
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="DeliveryNote" ImageUrl="/Eprocurement.Test/Images/node_document_collapsed.gif" ExpandedImageUrl="/Eprocurement.Test/Images/node_document_expanded.gif">
Delivery Note<tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="DeliveryNotePendingConfirmation" ImageUrl="/Eprocurement.Test/Images/node_state_pending_confirmation.gif">
Pending Confirmation
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="DeliveryNoteCancelled" ImageUrl="/Eprocurement.Test/Images/node_state_cancelled.gif">
Cancelled
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="DeliveryNoteConfirmed" ImageUrl="/Eprocurement.Test/Images/node_state_confirmed.gif">
Confirmed
</tvns:treenode>
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="Invoice" ImageUrl="/Eprocurement.Test/Images/node_document_collapsed.gif" ExpandedImageUrl="/Eprocurement.Test/Images/node_document_expanded.gif">
Invoice<tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="InvoiceUnpaid" ImageUrl="/Eprocurement.Test/Images/node_state_unpaid.gif">
Unpaid
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="InvoicePartPaid" ImageUrl="/Eprocurement.Test/Images/node_state_part_paid.gif">
Part Paid
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="InvoiceDisputed" ImageUrl="/Eprocurement.Test/Images/node_state_disputed.gif">
Disputed
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="InvoicePaid" ImageUrl="/Eprocurement.Test/Images/node_state_paid.gif">
Paid
</tvns:treenode>
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="CreditNote" ImageUrl="/Eprocurement.Test/Images/node_document_collapsed.gif" ExpandedImageUrl="/Eprocurement.Test/Images/node_document_expanded.gif">
Credit Note<tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="CreditNoteApprovedForPayment" ImageUrl="/Eprocurement.Test/Images/node_state_approved_for_payment.gif">
Approved For Payment
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="CreditNotePartUsed" ImageUrl="/Eprocurement.Test/Images/node_state_part_used.gif">
Part Used
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="CreditNoteUsed" ImageUrl="/Eprocurement.Test/Images/node_state_used.gif">
Used
</tvns:treenode>
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="Payment" ImageUrl="/Eprocurement.Test/Images/node_document_collapsed.gif" ExpandedImageUrl="/Eprocurement.Test/Images/node_document_expanded.gif">
Payment<tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="PaymentDraft" ImageUrl="/Eprocurement.Test/Images/node_state_draft.gif">
Draft
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="PaymentPendingApproval" ImageUrl="/Eprocurement.Test/Images/node_state_pending_approval.gif">
Pending Approval
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="PaymentPendingConfirmation" ImageUrl="/Eprocurement.Test/Images/node_state_pending_confirmation.gif">
Pending Confirmation
</tvns:treenode><tvns:treenode NavigateUrl="java script: __doPostBack('_ctl0:_ctl3:TV','')" NodeData="PaymentReceived" ImageUrl="/Eprocurement.Test/Images/node_state_received.gif">
Received
</tvns:treenode>
</tvns:treenode>
</tvns:treenode>
</tvns:treeview>
  • 0

#6 Mike

Mike

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 1 079 сообщений
  • Город:Москва

Отправлено 29 сентября 2005 - 10:49

Если-бы WR умел работать с DHTML... Но, насколько я знаю, он не умеет. Боюсь, что из инструментов Mercury - только QTP+.Net сможет работать с таким treeview (чтобы работать из QTP без .Net, надо предпринимать дополнительные усилия)
  • 0
Best regards,
Майк.

#7 Fib

Fib

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

  • Members
  • Pip
  • 24 сообщений
  • Город:Minsk

Отправлено 29 сентября 2005 - 16:51

Спасибо Mike и Dmitry_NJ за ваши ответы
  • 0

#8 Dmitry_NJ

Dmitry_NJ

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 3 122 сообщений
  • ФИО:Дмитрий Шевченко
  • Город:New Jersey, USA

Отправлено 29 сентября 2005 - 21:31

Дмитрий, спасибо за ответ, но я хотела бы возразить. Дело в том, что у меня написано уже много тестов для моего web application (ASP.Net) и все было просто великолепно (все контролы распозновались), пока в этом приложении не поменяли дерево (сначала  просто у нас было не дерево как таковое -- оно не экспандилось и не коллапсилось -- и работала я, передвигаясь по веточкам, которые распозновались как General element и я просто на них кликала).

И распознавание как "General element" вы считаете за нормальное распознавание? :crazy: Еще раз хочу сказать, что WR не предназначен для работы с .NET приложениями. Тот факт, что его как-то можно использовать для тестирования таких приложений (где-то повезет и контролы будут стандартными, где-то можно сделать map на стандартный класс и это сработает), не говорит о том, что WR поддерживает .NET. Рано или поздно вы столкнетесь с каким-нибудь хитрым .NET контролом, с которым ничего не сможете сделать, используя WR. Либо для того, чтобы что-то сделать понадобятся сверхусилия. Все это свидетельства того, что если вы тестируете .NET приложения, то вам нужен другой инструмент.
  • 0
Дмитрий Шевченко

HP Software


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

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