2008-09-19 15 views
20

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

वर्तमान में हम परीक्षण में आदेशों का उपयोग:

// force new window to open at this point - so we can select it later 
selenium().getEval("this.browserbot.getCurrentWindow().open('', 'enquiryPopup')"); 
selenium().click("//input[@value='Submit']"); 
selenium().waitForPopUp("enquiryPopup", getWaitTime()); 
selenium().selectWindow("enquiryPopup"); 

... जो काम करता है समय के सबसे। कभी कभी परीक्षण के साथ

com.thoughtworks.selenium.SeleniumException: Permission denied 

किसी को भी एक बेहतर, अधिक विश्वसनीय विधि बता सकते हैं waitForPopUp() लाइन पर असफल हो जायेगी?

इसके अलावा, हम मुख्य रूप से IE6 पर इन परीक्षणों और 7.

+2

क्या हो यह इस सूत्र के साथ है? नीचे 5 अलग-अलग लोग इसे हाइजैक करने की कोशिश कर रहे हैं! – ryeguy

उत्तर

3

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

यह आईई 7 (सामान्य मोड) का उपयोग करके मेरे लिए काम करता है।

क्या एक अजीब परेशानी है। एसओ के लिए आकाश में स्पेगेटी राक्षस का शुक्रिया अदा करें या आईई में काम करने के लिए कोई रास्ता नहीं है।

<tr> 
    <td>getEval</td> 
    <td>selenium.browserbot.getCurrentWindow().open('', 'windowName');</td> 
    <td></td> 
</tr> 
<tr> 
    <td>click</td> 
    <td>buttonName</td> 
    <td></td> 
</tr> 
<tr> 
    <td>windowFocus</td> 
    <td>windowName</td> 
    <td></td> 
</tr> 
<tr> 
    <td>waitForPopUp</td> 
    <td>windowName</td> 
    <td>3000</td> 
</tr> 
<tr> 
    <td>selectWindow</td> 
    <td>windowName</td> 
    <td></td> 
</tr> 
+0

यह मेरे लिए तब तक काम नहीं करता जब तक कि मैं विंडो को अंतिम आदेश पर जारी नहीं करता। यह प्रतीक्षा करने से पहले कोई फर्क नहीं पड़ता है फॉरपॉपअप, है ना? –

1

चलाते समय * iehta मोड में चला रहे हैं तो आप यहाँ और वहाँ कुछ खामियों में चलाने जा रहे हैं। हम अपने काम पर सेलेनियम चलाते हैं और आईई और AJAX के साथ बहुत सारे मुद्दे प्रतीत होते हैं।

हालांकि, ऐसा लगता है कि आप जिस मुद्दे पर चल रहे हैं वह वह है जहां सेलेनियम पूरी तरह से लोड होने से पहले किसी अन्य विंडो में किसी घटक को एक्सेस करने का प्रयास कर रहा है। मुझे यकीन नहीं है कि आपकी डिफ़ॉल्ट टाइमआउट सीमा किस पर सेट की गई है, लेकिन आप इसे पिछले अंक प्राप्त करने के लिए 60 (60000ms) सेकंड तक बढ़ाने की कोशिश कर सकते हैं।

इसके अलावा मैं फ़ायरफ़ॉक्स (* क्रोम का उपयोग करके) में अपने परीक्षण चलाने का सुझाव दूंगा क्योंकि यह अधिक विश्वसनीय परिणाम उत्पन्न करता है, लेकिन कभी-कभी व्यापार आवश्यकताओं के कारण यह संभव नहीं है।

+0

ओह मेरा विश्वास करो, मेरी इच्छा है कि हम इसे फ़ायरफ़ॉक्स में चला सकें! लेकिन हमारे 99% उपयोगकर्ता IE पर हैं, इसलिए परीक्षण के लिए प्राथमिकता है ... हम * iexplore, not * iehta भी उपयोग करते हैं। मुझे मतभेदों से अवगत नहीं है? – brasskazoo

+0

* अर्था और * क्रोम https समर्थन के लिए अनुमति देता है। इस तरह आपको प्रमाणपत्रों से उत्पन्न होने वाली समस्याओं के बारे में चिंता करने की ज़रूरत नहीं है। – Josh

0

मैं सिर्फ एक और सेलेनियम समारोह, windowFocus() जोड़ने trialled:

// force new window to open at this point - so we can select it later 
selenium().getEval("this.browserbot.getCurrentWindow().open('', 'enquiryPopup')"); 
selenium().click("//input[@value='Submit']"); 
selenium().windowFocus("enquiryPopup"); 
selenium().waitForPopUp("enquiryPopup", getWaitTime()); 
selenium().selectWindow("enquiryPopup"); 

परीक्षण सफल रहा है जब मैं यह स्थानीय स्तर पर भाग गया, लेकिन उन सभी विधि केवल के साथ कहता है -/फोकस बनाने/प्रतीक्षा/चयन।

मैं बिल्ड सर्वर को सभी परीक्षण चलाने देता हूं, और यदि यह भी सफल होता है, तो मैं इसमें से लाइब्रेरी फ़ंक्शन कर दूंगा ...!

+0

कृपया हमें बताएं कि यह काम करता है या नहीं! – mcherm

+0

इस पल के लिए, यह काम कर रहा है, इसलिए मैं इसे पॉपअप का उपयोग करके सभी परीक्षणों में विस्तारित करने जा रहा हूं (हम अंततः लाइटबॉक्स में जा रहे हैं)। – brasskazoo

+0

यह बहुत उपयोगी है! मैं अपना परीक्षण काम करने में सक्षम हूं। धन्यवाद! – wen

-1

आपको कॉल करने वाले कॉल के आस-पास कुछ प्रतीक्षा विवरण जोड़ने का प्रयास करें।

मैं मज़बूती से हल उन्हें System.Threading.Thread.Sleep को कॉल करके (5000) था ..

0

मुझे पॉपअप विंडो के भीतर एक आईफ्रेम चुनने और एक फॉर्म भरने की आवश्यकता है। मुझे selectWindow cmd का उपयोग करने में परेशानी थी, जहां सेलेनियम मेरा आईफ्रेम नहीं ढूंढ सका, इसलिए मैंने आदेश हटा दिया।

यह Selenese मेरे लिए अच्छी तरह से काम (जहां आइफ्रेम शीर्षक और आईडी = account_frame):

<tr> 
    <td>click</td> 
    <td>//a[@class='item_add']</td> 
    <td></td> 
</tr> 
<tr> 
    <td>windowFocus</td> 
    <td>account_frame</td> 
    <td></td> 
</tr> 
<tr> 
    <td>waitForPopUp</td> 
    <td>account_frame</td> 
    <td>10000</td> 
</tr>