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
Post a Comment