2013-02-19 16 views
7

के साथ 'डिजिटल सर्टिफिकेट का चयन करें' जब मैं सेलेनियम वेबड्राइवर के साथ एक पृष्ठ खोलता हूं तो मुझे क्रोम डायलॉग बॉक्स "प्रमाणपत्र चुनें" मिलता है। डिफ़ॉल्ट प्रमाणपत्र सही है इसलिए मुझे केवल ठीक बटन क्लिक करना होगा। लेकिन मुझे इसके साथ समस्या है। मैं अजगर कोड है:सेलेनियम वेबड्राइवर क्रोम

drv = webdriver.Chrome() 
drv.get("https://example.com/login") 

और उसके बाद मैं कुछ ऐसा करना चाहते हैं:

drv.switch_to_alert().accept() 

या

drv.switch_to_alert().send_keys(Keys.TAB) 
drv.switch_to_alert().send_keys(Keys.SPACE) 

समस्या यह है कि है कोड लाइन drv.get पर क्रियान्वित बंद हो जाता है ("https://example.com/login")। वेबड्राइवर पेज लोड होने का इंतजार कर रहा है। और उस पंक्ति से पहले कोई क्रोम संवाद बॉक्स नहीं है।

मैं इसे कैसे प्रबंधित कर सकता हूं? आप क्यों पूछते हैं

http://www.autoitscript.com/site/autoit/

:

उत्तर

3

आप AutoIt की तरह कुछ का उपयोग करना होगा? यह एक ओएस संवाद है, जो सेलेनियम नहीं करता है और शायद कभी भी संभाल नहीं लेगा, इसलिए आपको अन्य समाधानों को चालू करना होगा (सी # में आपको उदाहरण के लिए बटन पर क्लिक करने के लिए देशी Win32 API विधियों का उपयोग करना चाहिए)।

+1

और लिनक्स पर आप क्या करते हैं? –

1

प्रमाण पत्र ओएस द्वारा प्रबंधित किए जाते हैं, ब्राउज़र नहीं। अपने ब्राउजर के सर्टिफिकेट स्टोर से आवश्यक प्रमाणपत्र हटाएं और फिर केवल एक प्रमाण पत्र मौजूद होने पर स्वचालित रूप से प्रमाणपत्र का चयन करने के लिए ब्राउज़र को कॉन्फ़िगर करें। आप एक ब्राउज़र प्रोफाइल भी बना सकते हैं और अपना प्रोग्राम इस प्रोफाइल को लॉन्च कर सकते हैं या HTTPS पर परीक्षण से बच सकते हैं।

+2

बिना क्रोम के डिफ़ॉल्ट प्रमाणपत्र को स्वीकार करने के लिए क्रोम को कॉन्फ़िगर कैसे करते हैं? –

1

यहां कुछ भी संभालने से पहले, नीचे जोड़ें ताकि जैसे ही आप नेविगेट/सर्टिफिकेट को पॉप अप करते हैं, उतना ही जमे हुए नहीं होंगे। बाद में सही waittime जोड़ने के लिए remeber।

getDriver().manage().timeouts().pageLoadTimeout(1000, TimeUnit.MILLISECONDS); 

इसके बाद, आप कीबोर्ड या ऑटो का उपयोग करने का प्रयास कर सकते हैं।

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