python - Navigating to a page by calling it's PageObject -


i'm writing selenium tests , wondering how can navigate profilepage, calling it's class in test got basepage class,

class basepage(object):     def __init__(self,driver):         self.driver = driver           self._validate_page(driver)      @abstractclassmethod     def _validate_page(self,driver):         return  class pagenotdisplayedexception(exception):  """throw exception when page not displayed, or different page displayed"""         pass 

my basetestcase class

class basetestcase(unittest.testcase):     def setup(self):         self.driver = webdriver.firefox()         self.driver.implicitly_wait(5)         self.driver.maximize_window()          # navigate application home page         self.driver.get('http://www.facebook.com')      def navigateto(self, to):         self.driver.get(to)      def teardown(self):         # close browser window         self.driver.quit() 

and smoketest. in smoketest i'd put navigateto(profilepage) wihtout test directly calling webdriver.

class smoketest(basetestcase):     def test_login(self):         loginpage(self.driver).login(self.driver)         navigateto(self.profilepage) 

and profilepage :

class profilepage(basepage):      _page_id = ".//[@class='profile']"     url = "https://www.facebook.com/my.profile"      def __init__(self,driver):         super(profilepage, self).__init__(driver)      def _validate_page(self, driver):         try:             driver.find_element_by_xpath(self._page_id)         except:              raise pagenotdisplayedexception             ("profile page not displayed") 

your profilepage page object class should have url property associated page:

class profilepage(basepage):      url = "https://my.url/profile" 

then, navigateto method should use property:

def navigateto(self, page):     self.driver.get(page.url) 

and, then, should call self.navigateto in test:

class smoketest(basetestcase):     def test_login(self):         loginpage(self.driver).login(self.driver)          profilepage = profilepage(self.driver)         self.navigateto(profilepage) 

Comments