2012-10-08 9 views
6

पर क्रोम में चुनिंदा ड्रॉप डाउन मेनू बंद करने में असमर्थ मैं कुछ महीनों के लिए सेलेनियम वेबड्राइवर के साथ काम कर रहा हूं और मुझे एक वेब ऐप के अंदर एक ड्रॉप डाउन मेनू में समस्या है जो मैं काम कर रहा हूं ।सेलेनियम वेबड्राइवर - मैक ओएस एक्स

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

इस बिंदु पर विकल्प चुना गया है लेकिन ड्रॉप डाउन मेनू बंद नहीं है।

मैंने विकल्प को फिर से चयन करने पर क्लिक करने का प्रयास किया है, लेकिन इसका कोई प्रभाव नहीं है, बाकी परीक्षण के दौरान अन्य पृष्ठों को नेविगेट किया गया है और मेनू बंद नहीं है।

फिर पृष्ठ सहेजा गया है और फिर से नेविगेट किया गया है। हालांकि ड्रॉप डाउन मेनू ब्राउज़र बंद होने तक बनी हुई है।

<select id="options" name="options" class="options"> 
<option value="option1 (auto)">option1 (auto)</option> 
<option value="option2">option2</option> 
<option value="option3">option3</option> 
</select> 

उत्तर

1

मैं एक काम के साथ समस्या हल है चारों ओर, के रूप में यह एक ही रास्ता है कि मैं काम करने के लिए मिल गया है है।

सबसे पहले आपको अपने उत्तर के लिए यूजीन.polschikov धन्यवाद। हालांकि यह समस्या को हल नहीं किया है, यह मेरी आंख को कुछ हद तक खोलता है, मुझे एक्शन बिल्डर का कोई ज्ञान नहीं था, और उसने मुझे भविष्य के परीक्षणों के बारे में कुछ बेहतरीन विचार दिए हैं। इसे पढ़ने वाले किसी भी व्यक्ति के लिए भी धन्यवाद और संभावित समाधान पर विचार किया।

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

हैप्पी प्रोग्रामिंग, बेन।

2

पहला समाधान मैं कोशिश करेगा अलग अलग तरीकों से मेनू विकल्प पर क्लिक करने के लिए है:

इस एप्लिकेशन से कोड है। सेलेनियम एपीआई हमें इस संभावना के साथ प्रदान करता है। 1) उदाहरण का पता लगाएं तत्वों के सीएसएस चयनकर्ताओं। proper location on web element in firepath

दृष्टिकोण 1

driver.findElement(By.cssSelector(cssOption2)).click(); 

दृष्टिकोण 2 का उपयोग:

String cssOption1 = "select[id='options']>option[value='option1 (auto)']"; 
String cssOption2 = "select[id='options']>option[value='option2']"; 
String cssOption3 = "select[id='options']>option[value='option3']"; 

इसके अलावा, आप में पाया गया कि तत्व पूरी तरह जैसे .इन firepath, ffox में फ़ायरबग ऐड-ऑन सत्यापित करने के लिए मत भूलना क्रिया बिल्डर एपीआई

WebElement mnuOptionElement; 
mnuOptionElement = driver.findElement(By.cssSelector(cssOption2)); 
Actions builder = new Actions(driver); 
// Move cursor to the Main Menu Element 
builder.moveToElement(mnuOptionElement).click(); 

अधिक कार्रवाइयों के बारे में जानकारी निर्माता आपको वेब तत्व पर क्लिक करने के jsExecutor का उपयोग कर here

दृष्टिकोण 3 प्राप्त कर सकते हैं। हमेशा सभी परिस्थितियों में मेरे लिए काम करता है।

JavascriptExecutor js = (JavascriptExecutor) driver; 
     StringBuilder stringBuilder = new StringBuilder(); 
     stringBuilder.append("var x = $(\'"+cssOption2+"\');"); 
     stringBuilder.append("x.click();"); 
     js.executeScript(stringBuilder.toString()); 

आशा इस काम करता है आप

+0

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

+0

क्या आपने जावास्क्रिप्ट का उपयोग करके क्लिक करने की कोशिश की है? यह तीसरा है जिसे मैंने –

+0

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

0

एक मानव एस्केप दबा सकते हैं बता गया बाहर निकलने के लिए हैं, तो आप सक्रिय तत्व में स्विच करके सेलेनियम में ऐसा कर सकते हैं:

from selenium.webdriver.common.keys import Keys 
    element = driver.switch_to.active_element 
    element.send_keys(Keys.ESCAPE)