2008-10-02 21 views
11

से पहले से मौजूद घटनाओं का परीक्षण करना मैं एक वेब पेज के लिए सेलेनियम परीक्षण लिखने की कोशिश कर रहा हूं जो उपयोगकर्ता को छोड़ने से पहले उपयोगकर्ता को संकेत देने के लिए एक ऑनबर्ननलोड ईवेंट का उपयोग करता है। सेलेनियम प्रकट होने वाले पुष्टिकरण संवाद को पहचानने के लिए प्रतीत नहीं होता है, या ठीक या रद्द करने का तरीका प्रदान करने के लिए प्रतीत होता है। क्या इसे करने का कोई तरीका है? मैं जावा सेलेनियम ड्राइवर का उपयोग कर रहा हूं, अगर यह प्रासंगिक है।सेलेनियम

उत्तर

3

आप उपयोगकर्ता एक्सटेंशन (या स्टोर स्टोर आदि में केवल कुछ जावास्क्रिप्ट) लिख सकते हैं जो उस विंडो का परीक्षण करता है .onbeforeunload सेट है, और उसके बाद इसे शून्य से बदल देता है पेज से जारी रखने से पहले। बदसूरत, लेकिन आपको पेज से बाहर ले जाना चाहिए।

+0

मैंने ऐसा करने का अंत नहीं किया (मेरी आवश्यकताओं को बदल दिया गया है कि मैं नियमित चेतावनी का उपयोग करके बेहतर था), लेकिन ऐसा लगता है कि यह चाल करेगा, और यह है कि सेलेनियम अन्य अलर्ट के लिए परीक्षण कैसे संभालता है। –

+0

यह सिर्फ मेरे लिए खुला होने से पहले 'js_eval "window.onbeforeunload = null" जोड़ने का मामला था। (रूबी में सेलेनियम-क्लाइंट, लेकिन आप आसानी से अन्य भाषाओं में अनुवाद करने में सक्षम होना चाहिए) –

0

जब मुझे सेलेनियम का उपयोग करके ब्राउज़र पर सीमित नियंत्रण के साथ सामना करना पड़ा, तो मैं MozLab प्लगइन में बदल गया जो केवल एक ब्राउज़र प्लेटफ़ॉर्म के लिए मेरी समस्या का समाधान करता है।

0

मुझे बस अपने आवेदन के लिए ऐसा करना पड़ा है जहां onbeforeunload हैंडलर एक संकेत देता है यदि कोई उपयोगकर्ता किसी पृष्ठ को सहेजता है, जबकि दस्तावेज़ किसी सहेजे गए स्थिति में होता है। अजगर कोड:

driver.switch_to.alert.accept() 

जावा बराबर होगा:

driver.switchTo().alert().accept(); 

यदि अलर्ट मौजूद नहीं है, इसके बाद के संस्करण कोड एक NoAlertPresentException साथ विफल हो जाएगा तो एक अलग परीक्षण की जांच करने के लिए कोई जरूरत नहीं है संकेत स्वीकार करने से पहले अस्तित्व।

मैं सेलेनियम 2.43.0 चला रहा हूं लेकिन मुझे लगता है कि यह थोड़ी देर के लिए किया जा रहा है।

ऐसे मामलों में जहां मैं नहीं चाहता कि प्रॉम्प्ट बिल्कुल आ जाए क्योंकि मैं परीक्षण नहीं कर रहा हूं, इसलिए मैं पृष्ठ छोड़ने से पहले window.onbeforeunloadnull पर सेट करने के लिए ब्राउज़र में कस्टम जावास्क्रिप्ट चलाता हूं। मैंने इसे टेस्ट टियरडाउन कोड में रखा है।