2011-04-12 23 views
5

पर काम करना बंद कर देता है मैं अपने सी # डब्ल्यूपीएफ यूआई के बीडीडी परीक्षण को स्वचालित करने के लिए White का उपयोग कर रहा हूं।व्हाइट यूआईयूटोमेशन क्लिक() विभिन्न प्लेटफार्म

मेरा पहला कुछ परीक्षण मेरी विकास मशीन (विंडोज 7 चल रहा है) पर अच्छी तरह से काम कर रहा है। हालांकि, जब मैं बिल्ड सर्वर (वर्चुअल मशीन विंडोज सर्वर 2003 आर 2 चल रहा है) पर एक ही कोड को चलाने और चलाने के लिए यह सही ढंग से काम नहीं करता है। दोनों मामलों में परीक्षण कमांड लाइन से चलाए जाते हैं और परीक्षण Cuke4Nuke ढांचे का उपयोग कर रहे हैं। सर्वर के मामले में मैं रिमोट डेस्कटॉप कनेक्शन के माध्यम से सर्वर तक पहुंच रहा हूं।

कोड लगता है: समस्या

var application = Application.Launch("whiteApp.exe"); 
var initializeOption = InitializeOption.NoCache; 
var windowCriteria = SearchCriteria.ByText("whiteApp"); 
var window = application.GetWindow(criteria, initializeOption); 
var criteria = SearchCriteria.ByAutomationId("rightButton"); 
var button = (Button) window.Get(criteria); 
button.click(); 

कि बटन क्लिक गतिविधि सक्रिय नहीं है जब यह सर्वर पर चलाया जाता है है। व्हाईट ने निष्पादन समाप्त होने के बाद यूआई को खुला छोड़ दिया है, तो बटन क्लिक किया जा सकता है (माउस का उपयोग कर)। एक दिलचस्प बात यह है कि क्लिक विधि चलने के बाद बटन नीचे दिए गए चित्र में क्लिक किए जाने के सबूत दिखाता है, अन्य बटनों के मामले में माउस पर प्रभाव दिखाया जाता है।

Button before and after click

उत्तर

6

मैं अगर यह आपकी समस्या है या नहीं यकीन नहीं है, लेकिन मैंने देखा है कि व्हाइट जब यह एक 64 पर AnyCPU प्लेटफॉर्म का इस्तेमाल करने और चलाने का निर्माण अनुप्रयोगों के द्वारा प्रयोग किया जाता है कुछ मुद्दों है बिट सिस्टम। किसी कारण से, जब भी यह इन शर्तों के तहत माउस को स्थानांतरित करने का प्रयास करता है, तो यह स्वचालित रूप से अनुरोधित स्थान की बजाय स्क्रीन के नीचे माउस को धक्का देता है। इसका मतलब है कि एक क्लिक कमांड उस बटन को याद करता है जिसे क्लिक करने के लिए कहा गया था।

यदि आप ऑटोमेशन एप्लिकेशन को x86 एप्लिकेशन के रूप में बनाते हैं, तो व्हाइट माउस को ठीक से स्वचालित करता है।

+0

धन्यवाद बहुत धन्यवाद, यह मेरे लिए काम नहीं करता है। मैंने इसे सर्वर 2003 आर 2 वीएम पर x86 के रूप में संकलित किया और इसका कोई फायदा नहीं हुआ। फिर भी धन्यवाद। – Klee

+1

एक ही समस्या थी और 32 बिट पर स्विचिंग इसे हल किया गया। क्या आप वाकई x86 के लिए _tests_ (वास्तविक अनुप्रयोग नहीं) निर्मित हैं? –

+0

मैं x86 के लिए ऑटोमेशन एप्लिकेशन/टेस्ट एप्लिकेशन बनाने की पुष्टि कर सकता हूं, मेरे लिए चाल है। धन्यवाद! –

0

मेरी स्थानीय विंडोज़ 7 x64 मशीन पर यह वही करता है।

पता नहीं है कि यह उपयोगी है, लेकिन बटन का उपयोग कर रहा है। RaiseClickEvent(); ठीक काम करता प्रतीत होता है। मुझे लगता है कि यह बटन या smt पर क्लिक किए बिना घटना उठाता है।

0

मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन मैं दूसरे दिन यह टकरा और सोचा कि मेरा उत्तर दूसरों के लिए उपयोगी हो सकती है ...

मैं परियोजना व्हाइट चल रहा हूँ NUnit के साथ एक 64-बिट Win7 पर मशीन। इसे मेरे लिए काम करने के लिए मुझे यह सुनिश्चित करना था कि परीक्षण 32-बिट प्रक्रिया में चलाए गए थे।

मैं TestDriven.Net प्लगइन का उपयोग कर रहा था। इसमें किसी भी CPU परीक्षण को 32-बिट या 64-बिट के रूप में चलाने का विकल्प होता है।

+1

यदि आप मेरे उत्तर पर टिप्पणी देखते हैं, तो @ Klee ने अपने परीक्षण ऐप को x86 (32-बिट एप्लिकेशन) के रूप में बनाने का प्रयास किया और इससे समस्या हल नहीं हुई। –

0

जैसा हैरी ने अपने उत्तर में उल्लेख किया है, x86 मोड में स्वचालन अनुप्रयोग (परीक्षण अनुप्रयोग) को मजबूर करना काम करता है।

हालांकि, असली समस्या व्हाइट द्वारा बनाई गई है। कोडप्लेक्स पर व्हाइट के चर्चा पृष्ठों पर, हाचिमा ने यह सुनिश्चित किया कि यह x86 के साथ काम करता है और x64: http://white.codeplex.com/discussions/228433