2013-02-25 32 views
5

नमस्ते मैंने कुछ समय पहले सेलेनियम का उपयोग एक वेबसाइट बनाने के लिए एक प्रोग्राम बनाने के लिए किया था जिसका उपयोग मैं आनंद ले रहा हूं।सी # सेलेनियम या वेब ब्रोसर वैकल्पिक नकल मानव

मैं सेलेनियम का उपयोग करने में कामयाब रहा जो मैं चाहता था कि बिना किसी परेशानी के पहले पृष्ठभूमि में इसका उपयोग कर रहा था।

मैं पीसी पर अन्य चीजों को प्रभावित किए बिना इसका उपयोग नहीं कर सका, मैंने वर्चुअल मशीनों का उपयोग करने के बारे में सोचा था, लेकिन मैं कोशिश करना और इससे बचाना चाहता हूं।

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

खुराक किसी को भी विंडोज़ फॉर्म एप्लिकेशन के भीतर ब्राउज़र के दृश्य प्रस्तुतिकरण को एकीकृत करने का सबसे अच्छा तरीका पता है, लेकिन फिर भी मुझे मुख्य प्रविष्टि आदि की नकल करने की अनुमति मिलती है लेकिन पृष्ठभूमि में चलती है।

मैंने वेटन, गेकोफ़एक्स, मोजनेट आदि जैसी चीज़ों के बारे में सुना है, लेकिन जो मैंने पढ़ा है, मुझे यकीन नहीं है कि इनमें से कोई भी काम करेगा।

+0

'वाटीएन' ने मेरे लिए बहुत अच्छा काम किया! –

+0

मैंने वेटन देखा, आखिरी संस्करण जारी किया गया था कुछ समय पहले यह अभी भी विकसित किया जा रहा है? मैंने फिर से awesomium देखा फिर ऐसा लगता है कि यह काम करना चाहिए मैं इसे आज रात कोशिश करूँगा। – Sam

उत्तर

1

क्या एप्लिकेशन को विंडो के भीतर होस्ट करने की आवश्यकता है?

मैंने सेलेनियम का उपयोग किया है, स्वचालन के लिए वाटिन, दुर्भाग्य से वे जो भी कर रहे हैं उसके साथ हस्तक्षेप करते हैं और मैं इसके आसपास एक रास्ता खोजने में कामयाब नहीं रहा हूं।

मैंने .Net WebBrowser कक्षा का भी उपयोग किया है, लेकिन स्वचालित करने के लिए मुझे यह सुनिश्चित नहीं है कि यह पूरी तरह से प्रदर्शित आईई है, जावास्क्रिप्ट के अंदर चलने के संबंध में। मुझे लगता है कि यह जावाकैम निष्पादित करता है, लेकिन आपको जांचना होगा।

आप को देखने के लिए क्या हो रहा है बिना सिर विकल्प उपलब्ध भी सेलेनियम के लिए भी मुझे लगता है कि देखते हैं, की जरूरत नहीं है:

: Is it possible to hide the browser in Selenium RC?

यहाँ नेतृत्वहीन संस्करणों की एक सूची है कि अगर आप के लिए व्यवहार्य है

https://gist.github.com/evandrix/3694955

+0

वैसे मैं कुछ प्रकार के दृश्य प्रस्तुतिकरण को पसंद करूंगा, मुझे नहीं लगता कि वेबब्रोसर क्लास पूरी तरह से फीचर्ड है क्योंकि मुझे वेबसाइट पर एक ऑटो लॉगिन स्थापित करने में समस्याएं थीं, जिनमें सेलेनियम के साथ कोई समस्या नहीं थी, मुझे लगता है कि जावास्क्रिप्ट सुरक्षा है लॉगिन पर जो WebBrowser गड़बड़ कर दिया। लक्ष्य इस के लिए एक पूरी तरह से आत्म निहित आवेदन करने की कोशिश है। – Sam

+0

बस http://awesomium.com पर फिर से देखा, मैंने कल रात देखा लेकिन सोचा कि यह सी ++ केवल मैं देखूंगा कि क्या इसमें डाइविंग से पहले मुझे कुछ सी # उदाहरण मिल सकते हैं। – Sam

+0

बस ब्याज से बाहर, क्या आप इसे टेस्ट बॉक्स के साथ-साथ एक देव बॉक्स पर भी चला रहे हैं? –

6

सामान्यतः, जब आप किसी ब्राउज़र का उपयोग करके वेब पेज स्वचालित करने का प्रयास कर रहे होते हैं, तो आपके पास उपयोगकर्ता ईवेंट अनुकरण करने के लिए दो विकल्प होते हैं। आप या तो जावास्क्रिप्ट के माध्यम से उन्हें अनुकरण कर सकते हैं, या आप माउस और कीबोर्ड घटनाओं को अनुकरण करने के लिए ओएस-स्तरीय तंत्र (तथाकथित "मूल घटनाएं") का उपयोग कर सकते हैं। दोनों दृष्टिकोणों में उनके नुकसान हैं।

केवल जावास्क्रिप्ट का उपयोग करके नकली घटनाएं संभवतः विंडो को स्वचालित रूप से पृष्ठभूमि में रहने के लिए स्वचालित रूप से सिस्टम फोकस के बिना स्वचालित रूप से रहने की अनुमति देती हैं, जबकि आप इच्छित कार्यों को पूरा करते हैं। सेलेनियम आरसी ने इस विधि का उपयोग किया, और सेलेनियम वेबड्राइवर फ़ायरफ़ॉक्स और आईई के लिए नकली घटनाओं का उपयोग करने की क्षमता प्रदान करता है। हालांकि, इस दृष्टिकोण में कुछ कमीएं हैं। नकली घटनाओं में आपको निष्ठा और सटीकता की कमी हो सकती है। उदाहरण के लिए, सीएसएस :hover छद्म चयनकर्ता के माध्यम से काम करने वाले पृष्ठ पर "ड्रॉप-डाउन मेनू" जावास्क्रिप्ट के माध्यम से ट्रिगर नहीं किया जा सकता है, इसलिए यह दृष्टिकोण इन मामलों में विफलता के लिए बर्बाद हो गया है। इसके अतिरिक्त, चूंकि आप जावास्क्रिप्ट का उपयोग कर रहे हैं, इसलिए आप जावास्क्रिप्ट सैंडबॉक्स तक ही सीमित हैं, जिसका अर्थ है कि क्रॉस-डोमेन फ्रेम और जैसे सख्ती से सीमा से बाहर हो सकते हैं।

दूसरी ओर, मूल घटनाएं उपयोगकर्ता के वास्तविक माउस और कीबोर्ड संचालन के अधिक निकटता से प्रतिनिधित्व करती हैं। आम तौर पर, वे सही घटनाओं को वेब पेज पर और सही क्रम में आग लगाने की अनुमति देंगे, बिना किसी अनुमान के आपको कौन से ईवेंट आग लगाना चाहिए।उनका उपयोग करने का नकारात्मक पक्ष यह है कि उन्हें सही तरीके से कार्यान्वित करने के लिए, स्वचालित रूप से विंडो को सिस्टम को ईवेंट को ठीक से प्राप्त करने के लिए ध्यान केंद्रित करना चाहिए। यदि आप विंडोज पर हैं, तो SendMessage एपीआई का उपयोग करके आप इसके आसपास हैक करने का प्रयास कर सकते हैं, लेकिन यह Wrong Thing to do है, क्योंकि यह त्रुटि प्रवण है और पूरी तरह से काम करने की गारंटी नहीं है। देशी घटनाओं का उपयोग करने का सही तरीका SendInput एपीआई का उपयोग करना है, लेकिन वह एपीआई सिस्टम फोकस के साथ विंडो में इनपुट भेजता है। वेबड्राइवर उपयोगकर्ता इनपुट को अनुकरण करने के लिए मूल घटनाओं का उपयोग करने के लिए डिफ़ॉल्ट है, लेकिन यह त्रुटिपूर्ण SendMessage दृष्टिकोण के लिए डिफ़ॉल्ट है। IE के लिए, कम से कम, यह अधिक सही SendInput दृष्टिकोण का उपयोग करने का विकल्प प्रदान करता है।

यदि आप अग्रभूमि में ब्राउज़र विंडो की आवश्यकता नहीं है, तो आपको वास्तव में एक हेडलेस विकल्प देखना चाहिए। PhantomJS एक शानदार विकल्प है, और वेबड्राइवर के पास इसके लिए एक ड्राइवर भी है, जिसका अर्थ है कि आप अभी भी अपना ऑटोमेशन कोड सी # में लिख सकते हैं। अन्यथा, आप ऊपर उल्लिखित अन्य दृष्टिकोणों में से एक तक ही सीमित हैं।

+0

2 अलग-अलग विकल्पों की आपकी व्याख्या के लिए धन्यवाद, मुझे लगता है कि मैं बातचीत के जावास्क्रिप्ट विधि के साथ जा रहा हूं क्योंकि जिस वेबसाइट को मैं लिख रहा हूं, वह इस मार्ग के साथ काम करेगा। – Sam

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

  • कोई संबंधित समस्या नहीं^_^