WR+ASP.Net web app не распознается дерево в IE
#1
Отправлено 28 сентября 2005 - 17:30
Итак, есть дерево, которое является объектом кастомерского класса (одним из свойств этого класса явлвется объект стандартного класса 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
#2
Отправлено 28 сентября 2005 - 19:08
Вам нужны не дополнительные WR add-in'ы, вам нужен вообще другой инструмент, например тот же QTP с .NET add-in'ом. Просто потому, что WR не поддерживал, не поддерживает и не будет поддерживать работу с .NET приложениями.Приложение написано на ASP.Net. Может мне нужны какие-либо add-ins еще, кроме встроенных?
#3
Отправлено 29 сентября 2005 - 08:55
#4
Отправлено 29 сентября 2005 - 09:02
Майк.
#5
Отправлено 29 сентября 2005 - 09:41
<?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>
#6
Отправлено 29 сентября 2005 - 10:49
Майк.
#7
Отправлено 29 сентября 2005 - 16:51
#8
Отправлено 29 сентября 2005 - 21:31
И распознавание как "General element" вы считаете за нормальное распознавание? Еще раз хочу сказать, что WR не предназначен для работы с .NET приложениями. Тот факт, что его как-то можно использовать для тестирования таких приложений (где-то повезет и контролы будут стандартными, где-то можно сделать map на стандартный класс и это сработает), не говорит о том, что WR поддерживает .NET. Рано или поздно вы столкнетесь с каким-нибудь хитрым .NET контролом, с которым ничего не сможете сделать, используя WR. Либо для того, чтобы что-то сделать понадобятся сверхусилия. Все это свидетельства того, что если вы тестируете .NET приложения, то вам нужен другой инструмент.Дмитрий, спасибо за ответ, но я хотела бы возразить. Дело в том, что у меня написано уже много тестов для моего web application (ASP.Net) и все было просто великолепно (все контролы распозновались), пока в этом приложении не поменяли дерево (сначала просто у нас было не дерево как таковое -- оно не экспандилось и не коллапсилось -- и работала я, передвигаясь по веточкам, которые распозновались как General element и я просто на них кликала).
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных