通过调用 PageObject 导航到页面
Navigating to a page by calling it's PageObject
我正在编写一些 selenium 测试,想知道如何导航到我的 ProfilePage,只需在我的测试中调用它 class
所以我得到了我的 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 this exception when page was not displayed, or different page is displayed"""
pass
我的 BaseTestCase class
class BaseTestCase(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(5)
self.driver.maximize_window()
# navigate to the application home page
self.driver.get('http://www.facebook.com')
def navigateTo(self, to):
self.driver.get(to)
def tearDown(self):
# close the browser window
self.driver.quit()
和我的烟熏测试。在我的 smoketest 中,我想放置类似 navigateTo(ProfilePage) 的东西,而不是直接调用 webdriver 的测试。
class SmokeTest(BaseTestCase):
def test_login(self):
LoginPage(self.driver).login(self.driver)
navigateTo(self.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 could not be displayed")
您的 ProfilePage
页面对象 class 应该有一个与页面相关联的 url
属性:
class ProfilePage(BasePage):
url = "https://my.url/profile"
那么,navigateTo
方法应该使用这个 属性:
def navigateTo(self, page):
self.driver.get(page.url)
然后,您应该在测试中调用 self.navigateTo
:
class SmokeTest(BaseTestCase):
def test_login(self):
LoginPage(self.driver).login(self.driver)
profilePage = ProfilePage(self.driver)
self.navigateTo(profilePage)
我正在编写一些 selenium 测试,想知道如何导航到我的 ProfilePage,只需在我的测试中调用它 class 所以我得到了我的 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 this exception when page was not displayed, or different page is displayed"""
pass
我的 BaseTestCase class
class BaseTestCase(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(5)
self.driver.maximize_window()
# navigate to the application home page
self.driver.get('http://www.facebook.com')
def navigateTo(self, to):
self.driver.get(to)
def tearDown(self):
# close the browser window
self.driver.quit()
和我的烟熏测试。在我的 smoketest 中,我想放置类似 navigateTo(ProfilePage) 的东西,而不是直接调用 webdriver 的测试。
class SmokeTest(BaseTestCase):
def test_login(self):
LoginPage(self.driver).login(self.driver)
navigateTo(self.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 could not be displayed")
您的 ProfilePage
页面对象 class 应该有一个与页面相关联的 url
属性:
class ProfilePage(BasePage):
url = "https://my.url/profile"
那么,navigateTo
方法应该使用这个 属性:
def navigateTo(self, page):
self.driver.get(page.url)
然后,您应该在测试中调用 self.navigateTo
:
class SmokeTest(BaseTestCase):
def test_login(self):
LoginPage(self.driver).login(self.driver)
profilePage = ProfilePage(self.driver)
self.navigateTo(profilePage)