2011-12-12 16 views
7

मैं page objects और वेबड्राइवर प्रोजेक्ट साइट पर डिज़ाइन पैटर्न पढ़ रहा था और pagefactory पर आया था। यह पाइथन एपीआई के लिए वेबड्राइवर की तरह दिखता नहीं है जिसमें पेजफैक्टरी शामिल है। क्या ये सच है?क्या वेबड्राइवर पाइथन के लिए पेजफैक्टरी का समर्थन करता है?

+1

यहां से एक लेख है कि सेलेनियम के साथ पायथन में पेजऑब्जेक्ट पैटर्न का उपयोग कैसे करें: http://pragprog.com/magazines/2010-08/page-objects-in-python – jononomo

उत्तर

5

मुझे नहीं लगता कि पाइथन में जावा एनोटेशन (@Find (By.xxx) आदि) के कोई समकक्ष हैं। लेकिन इसका मतलब यह नहीं है कि आप PageObject पैटर्न का उपयोग नहीं कर सकते हैं।

आप यहां क्या करने पर अच्छा उदाहरण मिल सकते हैं: https://github.com/SeleniumHQ/selenium/blob/master/py/test/selenium/webdriver/common/google_one_box.py

+4

लिंक बदल गया है https://code.google.com/p/selenium/source/browse/py/test/selenium/webdriver/common/google_one_box.py – abhi

+0

लिंक को फिर से https://github.com/ पर अपडेट कर दिया गया है SeleniumHQ/सेलेनियम/ब्लॉब/मास्टर/py/परीक्षण/सेलेनियम/webdriver/आम/google_one_box.py – Deep

4

अजगर की तरह गतिशील रूप से टाइप भाषाओं कम ग्रस्त द्वारा डिजाइन पैटर्न वस्तुओं को बनाने के लिए कर रहे हैं - (क्योंकि यह आसान है, बस किसी भी प्रकार की वस्तु बनाने के उचित साथ तरीकों) और इसे वापस। पैटर्न सामान्य समस्याओं के लिए आम समाधान हैं। अगर कुछ एक समस्या नहीं है, तो आप इसे से निपटने के लिए एक पैटर्न की जरूरत नहीं है :-) OOP शुरू में एक डिजाइन

संपादित करें, दिसम्बर 2017 सी

में पैटर्न था: पेज स्वचालन के लिए

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

इसके अलावा, यदि आपकी ज़रूरतें अधिक जटिल हो जाती हैं, तो पाइथन एकाधिक विरासत की अनुमति देता है।

मेरे अनुभव में (पाइथन, सेलेनियम और वेबड्राइवर का उपयोग अब 5 से अधिक वर्षों से), पेज फैक्ट्री पैटर्न की कमी एक संकेत है कि आपको इसकी आवश्यकता नहीं है, न कि इसे कार्यान्वित नहीं किया जा सकता है।

1

मैंने 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/

संबंधित मुद्दे