Mercury Quick Test Pro والأجهزة الافتراضية:يعمل من جهاز عميل واحد وليس من جهاز آخر

StackOverflow https://stackoverflow.com/questions/91364

  •  01-07-2019
  •  | 
  •  

سؤال

لدي جهاز افتراضي (VMware) مثبت عليه Mercury Quick Test Professional 9.2.لدي برنامج نصي لاختبار تطبيق مكتوب بلغة VB.NET باستخدام مكتبة Infragistics.

إذا قمت بالوصول إلى هذا الجهاز الظاهري باستخدام الكمبيوتر المحمول الخاص بي (باستخدام Remote Desktop)، فسيعمل كل شيء بشكل جيد، ويكتمل البرنامج النصي دون مشكلة.يعمل جهاز الكمبيوتر المحمول الخاص بي بنظام XP، مع سمة Windows Classic.

إذا قمت بالوصول إلى هذا الجهاز الظاهري باستخدام جهاز آخر (باستخدام Remote Desktop)، فسيبدأ البرنامج النصي بشكل جيد، لكنه يتوقف في منتصف الطريق، بدون أي رسالة خطأ من QTP، لا شيء.يعمل هذا الجهاز بنظام XP، مع سمة Windows Classic.

أحد الاختلافات بين الإعدادين هو حجم الشاشة، فالكمبيوتر المحمول هو 1920x1280، والجهاز الآخر 1280x1024.

تتضمن الخطوة التي يتوقف فيها البرنامج النصي تحديد خانة اختيار داخل UltraWinGrid.يتم عرض مربع الاختيار نفسه، على الشاشة في كلتا الحالتين.

هل واجه أي شخص هذه المشكلة من قبل، أو لديه أي فكرة عن سبب اختلاف السلوك بين الجهازين؟

شكرًا.

هل كانت مفيدة؟

المحلول

نعم.لقد وجدت المشكلة.في الواقع، كان السيناريو يفشل بصمت لأن هذا ما طلب منه الشخص الذي كتب السيناريو أن يفعل.لم يتمكن من التحقق من صحة شيء كان خارج الشاشة، لذلك فشل البرنامج النصي.

كانت المشكلة هي تعريف QTP لـ "خارج الشاشة".لدي شاشتان متصلتان بجهاز الكمبيوتر المحمول الخاص بي، شاشة الكمبيوتر المحمول نفسه (1920 × 1200) وشاشة أخرى (1280 × 1024).أقوم بالاتصال بـ VM لـ QTP باستخدام سطح المكتب البعيد، ويستخدم إعدادات الشاشة للكمبيوتر المحمول.هذا يعني أنه عندما أقوم بتشغيل البرنامج النصي QTP الخاص بي، ونقله إلى الشاشة الأخرى، فإنه لا يكون مناسبًا، وبالتالي لم تعد الشاشة مكبرة، ويكون الكائن خارج الشاشة جزئيًا، لذا لا يمكن العثور عليه.

الإصلاح بسيط:في Remote Desktop، استخدم علامة التبويب Display، واضبط حجم الشاشة على 1280x1024، ولن يواجه QTP أي مشاكل أخرى.

هاهو.

نصائح أخرى

إذا كنت لا تستخدم وضع الخبراء، و/أو تسمح لـ QTP بالقيام بمعظم العمل لإنشاء كائنات المستودع الخاصة بك، فنعم، إنها تشير إلى كل شيء بالبكسل.

أقوم بإنشاء جميع كائنات المستودع الخاصة بي يدويًا، وعرض المصدر (في حالة اختبار تطبيق الويب الآلي) واستخدام Object Spy للحصول على المساعدة عند الحاجة.أشير إلى عدم وجود أي معلومات لتحديد الموقع كجزء من تعريف الكائن الخاص بي، للسبب ذاته الذي تصادفه.

بالنسبة لأجزاء تطبيق الويب الخاص بي التي تتفاعل مع Windows (فتح ملف للتحميل، وما إلى ذلك) كان Object Spy ضروريًا للتجربة والخطأ الضروريين لإنشاء معرف فريد لإنشاء كائن المستودع.ولكن يمكن القيام به.

المثال 1:مربع حوار تصفح الملفات
النص = "اختر ملف"
originalclass = #32770 (على ما يبدو بعض Windows VooDoo لمربع حوار فتح الملف؟)

المثال 2:مربع نص اسم الملف في مربع حوار التصفح:
الفئة الأصلية = "تحرير"
النص المرفق "الملف &الاسم:" (المزيد من Windows VooDoo؟لن ينجح الأمر بالنسبة لي بدون "&")

المثال 3:فتح الزر في مربع الحوار:
النص = "&فتح"
فئة الكائن = "زر"

حظ سعيد!

نقطة للتوضيح:لقد ذكرت أن QTP يتوقف مع عدم وجود رسالة خطأ.هل يعني ذلك أيضًا أن ملف سجل نتائج الاختبار لا يحتوي أيضًا على رسالة خطأ؟إذا كان السجل يحتوي على أي معلومات، فقد يكون ذلك مفيدًا في تشخيص المشكلة.هل يمكنك مشاركة أسطر التعليمات البرمجية عند النقطة التي يفشل فيها البرنامج النصي؟

كما سيعمل سطح المكتب البعيد على تغيير حجم سطح المكتب الموجود على الجهاز البعيد.على الرغم من أن نصوص QTP لا تعتمد على الإحداثيات بطبيعتها، إلا أن العبارات الفردية يمكن أن تعتمد على الإحداثيات بالنسبة لكائن ما.ويمكن أن يكون القرار مشكلة في هذا الصدد.على سبيل المثال، تخيل أن لديك خطًا مثل Button.Click(5, 150) مسجلاً على جهاز بدقة أعلى.ولكن إذا حاولت تشغيله على جهاز ذو دقة أقل، وكان الرقم 150 خارج حدود الكائن على الدقة المنخفضة، فقد يتسبب ذلك في حدوث مشكلة.

QTP يفعل لا استخدم إحداثيات الشاشة إلا كحل أخير، إذا تم تعريف الكائنات على أنها كائنات عالية المستوى (SwfTable في هذه الحالة) يجب أن تكون على ما يرام، إذا لم يتعرف QTP على الكائن الذي يعود إليه WinObject وإحداثيات الشاشة.

إذا كنت تستخدم Infragistics، فيجب أن تعلم أنها توفر دعم QTP من خلال ميزة الاختبار المنتج الذي من المحتمل أن يحل مشكلتك.


يحرر: @ماتيو ف قال:

في الواقع، نحن نستخدم البرنامج المساعد Infragistics لـ QTP، ولا تزال لدينا المشكلة

هل يمكن أن تعطيني مثالاً على الخط الذي فشل؟

أشياء قليلة:

من المفترض أن تكون قادرًا على تصحيح الأخطاء على الجهاز الافتراضي بسهولة - ما عليك سوى الانتظار حتى يتوقف، والانتقال إلى مستودع الكائنات الخاص بك، ومعرفة ما إذا كان يمكنه التعرف على الكائن.إذا لم يكن الأمر كذلك، استخدم كائن التجسس لمعرفة الخصائص المختلفة بين أنظمة التشغيل.إذا كان هناك اختلاف، فيمكنك دائمًا تعيين هذه الخاصية إلى تعبير عادي وجعلها تتحقق من كلا الاحتمالين.

بافتراض أن هذه ليست المشكلة التي واجهناها في استخدام سطح المكتب البعيد مع QTP إذا كانت النافذة البعيدة مغلقة أو مصغّرة.بالنسبة لنا، كانت المشكلة تتمثل في عدم إمكانية تغيير الحافظة عندما لا تكون نافذة RDP مرئية، ولكن قد تكون هناك مفاجآت أخرى عند استخدام QTP بهذه الطريقة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top