2011-03-28 16 views
5

मेरे पास एक ऐसा एप्लिकेशन है जो मनमाने ढंग से विंडोज एप्लिकेशन पर कुछ स्वचालन करता है। मैं इसका परीक्षण करने के लिए नोटपैड का उपयोग कर रहा हूं।यूआईयूटोमेशन और रिमोट डेस्कटॉप कनेक्शन

इस स्वचालन के दौरान, मुझे कोड से घटनाओं को आमंत्रित करना होगा। मैं वर्तमान में दो प्रकार की घटनाओं का समर्थन करता हूं क्योंकि वे सबसे आम हैं, InvokePattern और ExpandCollapsePattern

मैं एक कंप्यूटर का उपयोग करता हूं जिसे मैं दूरस्थ डेस्कटॉप को परीक्षण करने के लिए कर सकता हूं। लेकिन यह अजीब है। जब मैं दूरस्थ डेस्कटॉप के माध्यम से कंप्यूटर से कनेक्ट होता हूं, तो एप्लिकेशन ठीक काम करता है। जब मैं कंप्यूटर से डिस्कनेक्ट करता हूं, तो मेरा कोड ExpandCollapsePattern (InvokePattern ठीक काम करता है) के लिए काम करना बंद कर देता है। मुझे एक अवैधऑपरेशन अपवाद मिलता है।

प्रलेखन कहता है कि अगर नोड को लीफ नोड के रूप में चिह्नित किया जाता है तो इसे केवल तभी फेंक दिया जाना चाहिए। रिमोट डेस्कटॉप को अलग-अलग बनाता है कि मुझे अवैधऑपरेशन अपवाद मिल रहा है?

यहां कोड है जो मुझे वर्तमान में ईवेंट करने के लिए है।

ExpandCollapseState state = 
    patternMenu.Current.ExpandCollapseState; 
if (state == ExpandCollapseState.Expanded) 
    patternMenu.Collapse(); 
else if (state == ExpandCollapseState.PartiallyExpanded || 
     state == ExpandCollapseState.Collapsed) 
    patternMenu.Expand(); 

patternMenu एक ExpandCollapsePattern GetCurrentPattern का उपयोग कर AutomationElement से मिल गया है।

जब मैं मूल्य मुद्रित करता हूं तो ExpandCollapseState का वर्तमान मान "संक्षिप्त" होता है।

संपादित करें: मुझे कोई भी मौका है कि मुझे पता चल सकता है कि मुझे डाउनवोट क्यों मिला और यह एक बुरा सवाल कैसे है? मैं वास्तव में क्या हो रहा है के बारे में उलझन में हूं, क्योंकि यह दूरस्थ डेस्कटॉप बंद होने पर ही असफल हो रहा है। यदि यह वास्तव में बेवकूफ सवाल है कि मुझे जवाब पता होना चाहिए, तो मुझे एक स्पष्टीकरण और फिर एक डाउनवोट पसंद आएगा।

डेस्कटॉप के साथ इंटरैक्ट करने वाली प्रक्रिया विंडोज सेवा नहीं है। यह एक एप्लिकेशन है जिसे मैं कंप्यूटर में रिमोट डेस्कटॉप के बाद शुरू करता हूं। क्या ऐसा इसलिए है क्योंकि मैं डेस्कटॉप लॉक कर रहा हूं?

मैं विंडोज मशीन में लॉग इन करने के लिए उबंटू पर "टर्मिनल सर्वर क्लाइंट" का उपयोग कर रहा हूं। क्या इस एप्लिकेशन पर बंद बटन दबाकर डेस्कटॉप लॉक हो जाता है?

उत्तर

2

आम तौर पर बोलते हुए, आप आम तौर पर यूआई स्वचालन या गैर-इंटरैक्टिव डेस्कटॉप पर समान नहीं चल सकते हैं। गैर-इंटरैक्टिव डेस्कटॉप में इनपुट के संबंध में विभिन्न सीमाएं हैं: कोई केंद्रित तत्व नहीं है, इनपुट नहीं भेजा जा सकता है, इसलिए इन पर निर्भर कुछ भी विफल हो जाएगा।

कुछ कार्यक्षमताएं, जैसे कि विंडोज संदेश भेजना, ठीक काम करेगा। यहां क्या हो रहा है कि InvokePattern कार्यक्षमता को कवर के तहत संदेशों के रूप में लागू किया गया है, फिर भी काम करता है; लेकिन विस्तार/संकुचन इनपुट के संदर्भ में लागू किया जा सकता है, जो असफल हो जाएगा।

स्पष्ट नहीं क्यों, अपने मामले में, यह विफल रहता है जब आप ग्राहक (वह हिस्सा होने की उम्मीद है) बंद कर दें, लेकिन काम करने के लिए जब दूरस्थ डेस्कटॉप ताले ही प्रकट होता है - यह दोनों ही मामलों में एक ही व्यवहार करने के लिए उम्मीद करेंगे ।

(ध्यान दें कि यदि स्थानीय उबंटू डेस्कटॉप ताले, सब ठीक होना चाहिए और अभी भी काम करते हैं, जब तक कि ग्राहक अभी भी चल रहा है। दूरस्थ क्लाइंट अभी भी, उस मामले में 'इंटरैक्टिव' है, क्योंकि यह एक जीवित ग्राहक मिला है इससे जुड़ा हुआ है कि इस पर ध्यान दिए बिना कि क्लाइंट एक इंटरैक्टिव या गैर-इंटरैक्टिव डेस्कटॉप पर चल रहा है या नहीं - अवधारणाएं किसी अन्य ओएस पर चलने वाले क्लाइंट पर भी लागू नहीं हो सकती हैं!)

+0

मैंने सोचा कि यह ठीक चल रहा था जब डेस्कटॉप ने खुद को बंद कर दिया था , पर मैं गलत था।जैसे ही डेस्कटॉप स्वयं लॉक हो गया, नवीनतम परीक्षण परिणाम विफल हो गया। मैं दूरस्थ डेस्कटॉप का उपयोग करने के बजाय परीक्षण चलाने के लिए एक वीएम स्थापित करना शुरू कर दूंगा। धन्यवाद। –

संबंधित मुद्दे