मैं page objects और वेबड्राइवर प्रोजेक्ट साइट पर डिज़ाइन पैटर्न पढ़ रहा था और pagefactory पर आया था। यह पाइथन एपीआई के लिए वेबड्राइवर की तरह दिखता नहीं है जिसमें पेजफैक्टरी शामिल है। क्या ये सच है?क्या वेबड्राइवर पाइथन के लिए पेजफैक्टरी का समर्थन करता है?
उत्तर
मुझे नहीं लगता कि पाइथन में जावा एनोटेशन (@Find (By.xxx) आदि) के कोई समकक्ष हैं। लेकिन इसका मतलब यह नहीं है कि आप PageObject पैटर्न का उपयोग नहीं कर सकते हैं।
आप यहां क्या करने पर अच्छा उदाहरण मिल सकते हैं: https://github.com/SeleniumHQ/selenium/blob/master/py/test/selenium/webdriver/common/google_one_box.py
अजगर की तरह गतिशील रूप से टाइप भाषाओं कम ग्रस्त द्वारा डिजाइन पैटर्न वस्तुओं को बनाने के लिए कर रहे हैं - (क्योंकि यह आसान है, बस किसी भी प्रकार की वस्तु बनाने के उचित साथ तरीकों) और इसे वापस। पैटर्न सामान्य समस्याओं के लिए आम समाधान हैं। अगर कुछ एक समस्या नहीं है, तो आप इसे से निपटने के लिए एक पैटर्न की जरूरत नहीं है :-) OOP शुरू में एक डिजाइन
संपादित करें, दिसम्बर 2017 सी
में पैटर्न था: पेज स्वचालन के लिएहमारे देसी ढांचे में (स्वचालित यूआई परीक्षण और अन्य उद्देश्यों के लिए), हम पेजोबजेक्ट डिज़ाइन पैटर्न का उपयोग करते हैं, लेकिन पेज फ़ैक्टरी के लिए इसकी आवश्यकता नहीं थी। हमारे कस्टम बेसपेज से पुरानी स्कूल की विरासत में हमारी सभी (काफी विविधता) ज़रूरतें शामिल हैं। हम पेज तत्व बनाने के लिए कुछ चाल का उपयोग करते हैं और सुनिश्चित करते हैं कि उचित पृष्ठ तत्काल था, और उस अनुभव के आधार पर मुझे यह पसंद है कि हमारा पेज ऑब्जेक्ट सरल है।
इसके अलावा, यदि आपकी ज़रूरतें अधिक जटिल हो जाती हैं, तो पाइथन एकाधिक विरासत की अनुमति देता है।
मेरे अनुभव में (पाइथन, सेलेनियम और वेबड्राइवर का उपयोग अब 5 से अधिक वर्षों से), पेज फैक्ट्री पैटर्न की कमी एक संकेत है कि आपको इसकी आवश्यकता नहीं है, न कि इसे कार्यान्वित नहीं किया जा सकता है।
मैंने pageobject_support
नामक एक मॉड्यूल बनाया है जो पेजफैक्टरी पैटर्न को एक पाइथोनिक तरीके से लागू करता है।
from pageobject_support import cacheable, callable_find_by as find_by
from selenium.webdriver.common.by.By
class GoogleSearchPage(object):
_search_box = find_by(how=By.NAME, using='q', cacheable=True)
_search_button = find_by(name='btnK')
def __init__(self, driver):
self._driver = driver
def search(self, keywords):
self._search_box().click()
self._search_box().send_keys(keywords)
self._search_button().click()
आपकी प्रतिक्रिया की सराहना की है:
इस मॉड्यूल के साथ, गूगल सर्च पेज इस प्रकार तैयार किया जा सकता है। अधिक जानकारी के लिए, कृपया https://jeremykao.wordpress.com/2015/06/10/pagefactory-pattern-in-python/
- 1. क्या पाइथन शून्य-प्रति I/O का समर्थन करता है?
- 2. क्या पाइथन के लिए ओरेकल रैपर है जो xmltype कॉलम का समर्थन करता है?
- 3. क्या पाइथन समर्थन मल्टीप्रोसेसर/मल्टीकोर प्रोग्रामिंग करता है?
- 4. आप पाइथन + वेबड्राइवर
- 5. पाइथन + सेलेनियम वेबड्राइवर
- 6. क्या मोनो एक्सएएमएल का समर्थन करता है?
- 7. क्या cocos2d एआरसी का समर्थन करता है?
- 8. क्या OpenRasta मोनो का समर्थन करता है?
- 9. क्या फैंटॉमजेएस कुकीज़ का समर्थन करता है?
- 10. क्या Qt OpenMP का समर्थन करता है?
- 11. क्या Arduino थ्रेडिंग का समर्थन करता है?
- 12. क्या हेरोोकू PHP का समर्थन करता है?
- 13. क्या पाइथन में स्पैर मैट्रिस के लिए समर्थन है?
- 14. क्या मिनजीडब्ल्यू एमएफसी का समर्थन करता है?
- 15. क्या एसक्यूएलकेमी कैशिंग का समर्थन करता है?
- 16. क्या लुआ यूनिकोड का समर्थन करता है?
- 17. क्या tryhaskell.org समर्थन परिभाषाओं का समर्थन करता है?
- 18. क्या jsoup xpath का समर्थन करता है?
- 19. क्या LevelDB जावा का समर्थन करता है?
- 20. क्या वॉटर-वेबड्राइवर समर्थन उन लिंक पर क्लिक करता है जहां गंतव्य जावास्क्रिप्ट है?
- 21. क्या स्कैला समर्थन पूंछ रिकर्सन ऑप्टिमाइज़ेशन का समर्थन करता है?
- 22. क्या लुआ सजावट करने वालों का समर्थन करता है?
- 23. क्या पाइथन का मल्टीप्रोसेसिंग। पुल रिमोट सबप्रोसेसेस का समर्थन करता है?
- 24. क्या जीतने के लिए Devexpress GridControl समर्थन पेजिंग का समर्थन करता है?
- 25. क्या पाइथन mako टेम्पलेट समर्थन लूप संदर्भ में connitue/ब्रेक समर्थन करता है?
- 26. क्या FakeItEasy आंशिक मोक्स के विचार का समर्थन करता है?
- 27. क्या NSubstitute आंशिक मोक्स के विचार का समर्थन करता है?
- 28. क्या JSONKit एआरसी का समर्थन करता है, या क्या कोई कांटा है जो एआरसी का समर्थन करता है?
- 29. क्या कोई पाइथन वातावरण संपादन-और-जारी रखने का समर्थन करता है?
- 30. क्या पाइथन फिर मॉड्यूल शब्द सीमाओं का समर्थन करता है (\ b)?
यहां से एक लेख है कि सेलेनियम के साथ पायथन में पेजऑब्जेक्ट पैटर्न का उपयोग कैसे करें: http://pragprog.com/magazines/2010-08/page-objects-in-python – jononomo