मैं कैसे परीक्षण जो तत्व सेलेनियम आर सी में ध्यान केंद्रित किया करते हैं?मैं कैसे जांचूं कि सेलेनियम आरसी में किस तत्व का ध्यान केंद्रित किया गया है?
उत्तर
मैं काम करने के लिए :focus
pseudoclass विचार, यकीन नहीं क्यों नहीं मिल सका - लक्ष्यीकरण css=#search_input input.text
का मिलान नहीं हुआ है, लेकिन css=#search_input input.text:focus
नहीं किया? लेकिन यहाँ क्या मेरे लिए काम किया है:
self.assertEquals(self.se.get_element_index('dom=document.activeElement'),
self.se.get_element_index('//input[@id="search-query"]'))
यह Python Selenium API उपयोग कर रहा है, इसलिए get_element_index()
कॉल कोर सेलेनियम आदेश सूची के आसपास रैपर हैं। इसे अपने पर्यावरण में अनुकूलित करें। यह दस्तावेज़ के केंद्रित तत्व के तत्व सूचकांक (एक जावास्क्रिप्ट डोम लोकेटर के साथ मिल गया) और तत्व आप ध्यान देने के लिए परीक्षण करना चाहते हैं के तत्व सूचकांक का मूल्यांकन कर रहा है (एक XPath लोकेटर के साथ मिल गया।) यह भी this question देखते हैं।
आप जब सेलेनियम के लिए एक तत्व लोकेटर प्रदान CSS चयनकर्ताओं का उपयोग कर सकते हैं: http://release.seleniumhq.org/selenium-core/1.0/reference.html#locators
इसलिए, आप केवल मैच के लिए करता है, तो तत्व केंद्रित है अपने चयनकर्ता पर :focus
सीएसएस छद्म वर्ग का उपयोग कर सकते हैं।
संयोजन करें कि verifyElementPresent
कार्रवाई और निम्न के जैसा कुछ लक्ष्य: css=.yourclassname:focus
। निश्चित रूप से अपने CSS वर्ग नाम के साथ yourclassname
बदलें, या अन्य CSS चयनकर्ताओं में से एक का उपयोग करें; अंत में :focus
महत्वपूर्ण बात है।
ध्यान दें कि यह लगभग निश्चित रूप से सेलेनियम आईडीई फ़ायरफ़ॉक्स प्लगइन में काम नहीं करेगा। मुझे कल्पना है कि ऐसा इसलिए है क्योंकि इस प्लगइन के बजाय फोकस होगा। मैं इसे आईडीई (परीक्षण हमेशा विफल) में काम नहीं कर सकता है, लेकिन यह ठीक काम किया है एक बार मैं इसे निर्यात किया और एक जावा परीक्षण के रूप में भाग गया।
HTH
सैम
मैं इसे काम के रूप में उत्तर के रूप में चिह्नित कर रहा हूं लेकिन मैं वास्तव में इसे मेरे लिए काम नहीं कर सका। मैं सेलेनियम आरसी का उपयोग कर रहा हूं, मैं देख सकता हूं कि तत्व केंद्रित है (क्योंकि मैंने अपने सीएसएस में एक * फोकस {पृष्ठभूमि: गुलाबी} जोड़ा है), लेकिन यह है कि एलिमेंटपेजेंट हमेशा झूठी वापसी करता है। – hwiechers
मैं इस समस्या का समाधान मिल गया, और जब अपने परीक्षण चलाने के इस समस्या को हल करने के लिए एक सरल स्क्रिप्ट विकसित किया है। समस्या आपके ब्राउज़र के मूल मिलान और क्वेरी चयनकर्ताओं के साथ परिचालन प्रणाली के बारे में जागरूक है, जिसका अर्थ यह है कि जब तक कि आपका ब्राउज़र और वेब पेज टैब ऑपरेटिंग सिस्टम में फ़ोकस न करे, तब: फोकस चयनकर्ता आपके दस्तावेज़ में किसी भी आइटम से मेल नहीं खाएगा। मैंने JQuery के अंदर इस तरह से काम करने के लिए चारों ओर पोक किया है, और यह केवल JQuery को Sizzle का उपयोग करने के लिए मजबूर कर सकता है और ब्राउज़र के मूल कार्यों का उपयोग करके चयनकर्ता क्वेरी को अनुकूलित नहीं कर सकता है।
यदि आप निम्नलिखित स्क्रिप्ट https://gist.github.com/1166821 शामिल करते हैं, इससे पहले कि आप JQuery शामिल करते हैं, तो आपके सेलेनियम परीक्षण पास होंगे: फोकस परीक्षण।
मुद्दा, समाधान और कैसे की एक पूरी ऊपर लिखने परीक्षण चलाने के लिए के लिए, की समीक्षा http://blog.mattheworiordan.com/post/9308775285/testing-focus-with-jquery-and-selenium-or
आशा है कि दूसरों को, जो इस एक ही मुद्दा है में मदद करता है कृपया। अन्य उत्तर की
कोई भी मेरे लिए काम किया, विभिन्न कारणों के लिए जब मैं एक ही मुद्दा था। मैं निम्नलिखित कर रहा था (जावा में सेलेनियम 2.0 वेबड्राइवर के साथ)।
WebDriver driver = new FirefoxDriver();
String elScript = "return document.activeElement;";
// Note that the executeScript call returns a WebElement,
// so you can do quite a lot with the result.
WebElement focuseedEl = (WebElement) ((JavascriptExecutor) driver).executeScript(elScript);
टिप्पणी भ्रम मैं था के एक बिंदु को स्पष्ट करते हैं: executeScript क्या आप यह कहना निष्पादित करने के लिए के आधार पर अलग अलग बातें है, जो काफी मुश्किल हो सकता है देता है।
+1 - बहुत अच्छा काम किया! – JOpuckman
- 1. wxPython: मैं कैसे पता लगा सकता हूं कि किस विजेट पर ध्यान केंद्रित किया गया है?
- 2. वर्तमान में किस ऑब्जेक्ट पर ध्यान केंद्रित किया गया है यह पता लगाने के लिए कि
- 3. कैसे निर्धारित करें कि फ़ॉर्म पर किस नियंत्रण पर ध्यान केंद्रित किया गया है?
- 4. सी #: यह पता लगाने के लिए कि किस एप्लिकेशन पर ध्यान केंद्रित किया गया है
- 5. यह निर्धारित करने के लिए कि किस नियंत्रण पर एप्लिकेशन पर ध्यान केंद्रित किया गया है
- 6. सेलेनियम आईडीई: कैसे जांचें कि किसी तत्व का ध्यान केंद्रित है या नहीं?
- 7. पता लगाना कि किस नियंत्रण पर ध्यान केंद्रित किया गया है
- 8. मैं कैसे पता लगा सकता हूं कि वर्तमान में किस दृश्य पर ध्यान केंद्रित किया गया है?
- 9. मैं कैसे जांचूं कि एक चर प्रारंभ किया गया है
- 10. मैं कैसे जांच सकता हूं कि मेरे एप्लिकेशन पर ध्यान केंद्रित किया गया है या नहीं?
- 11. किसी तत्व पर सही तरीके से कैसे ध्यान केंद्रित करें?
- 12. सेलेनियम आरसी
- 13. जीडब्ल्यूटी में तत्व पर ध्यान केंद्रित कैसे करें?
- 14. मैं कैसे बता सकता हूं कि खिड़की पर ध्यान केंद्रित किया गया है या नहीं? (Win32 API)
- 15. मैं कैसे जांचूं कि वेब.कॉन्फिग
- 16. मैं कैसे जांचूं कि मेरे प्रोग्राम में डेटा पाइप किया गया है
- 17. Emacs Lisp में, मैं कैसे जांचूं कि एक चर परिभाषित किया गया है या नहीं?
- 18. मैं कैसे जांचूं कि रेल में एक चर परिभाषित किया गया है या नहीं?
- 19. सेलेनियम-आरसी: आप पाइथन
- 20. निर्धारित करें कि किस तत्व ने ऑनसेट सबमिट किया है
- 21. सेलेनियम आरसी> attachFile()
- 22. मैं कैसे जांचूं कि एक CGPoint प्रारंभ किया गया है या नहीं?
- 23. मैं कैसे जांचूं कि मूल्य
- 24. मैं कैसे जांचूं कि कक्षा को परिभाषित किया गया है या नहीं?
- 25. सेलेनियम वेब ड्राइवर या सेलेनियम आरसी
- 26. मैं कैसे पता लगा सकता हूं कि कौन सा जीडब्ल्यूटी तत्व केंद्रित है?
- 27. मैं कैसे जांचूं कि session_start दर्ज किया गया है या नहीं?
- 28. यदि jQuery क्लिक किया गया है/केंद्रित
- 29. मैं jasmine.js में एक spec पर कैसे ध्यान केंद्रित करूं?
- 30. jQuery: मैं कैसे जांचूं कि किसी तत्व विशेषता में स्ट्रिंग का हिस्सा होता है या नहीं?
दुर्भाग्य से get_element_index केवल तत्व के सूचकांक को अपने माता-पिता के भीतर प्राप्त करता है। तो यदि आपके पास दो divs ए और बी हैं, जिनमें से प्रत्येक में एकमात्र बच्चा के रूप में टेक्स्टफील्ड होता है, तो यदि ए का टेक्स्टबॉक्स चुना जाता है, तो आपके उदाहरण कोड में get_element_index कॉल दोनों 0 लौटाएंगे, इसलिए आपको झूठा मिलेगा सकारात्मक। –