Implement home page scenario
This commit is contained in:
parent
329003e664
commit
0176973a49
13
conftest.py
13
conftest.py
|
@ -55,7 +55,7 @@ def browser(config):
|
|||
b.quit()
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
@pytest.fixture
|
||||
def datatable():
|
||||
return DataTable()
|
||||
|
||||
|
@ -77,7 +77,6 @@ class DataTable(object):
|
|||
|
||||
@given(parsers.parse('I have navigated to the \'the-internet\' "{page_name}" page'), target_fixture='navigate_to')
|
||||
def navigate_to(browser, page_name):
|
||||
|
||||
BASE_URL = "https://the-internet.herokuapp.com"
|
||||
|
||||
PAGE_URLS = {
|
||||
|
@ -89,7 +88,9 @@ def navigate_to(browser, page_name):
|
|||
"inputs": BASE_URL + "/inputs",
|
||||
"secure area": BASE_URL + "/secure"
|
||||
}
|
||||
browser.get(PAGE_URLS.get(page_name.lower()))
|
||||
url = PAGE_URLS.get(page_name.lower())
|
||||
browser.get(url)
|
||||
return url
|
||||
|
||||
|
||||
@then(parsers.parse('a "{text}" banner is displayed in the top-right corner of the page'))
|
||||
|
@ -108,10 +109,12 @@ def verify_banner_text(browser, text):
|
|||
if attr.startswith("border"):
|
||||
assert "0px" == attr.split(": ")[1]
|
||||
|
||||
|
||||
@then(parsers.parse('the page has a footer containing "{text}"'))
|
||||
def verify_footer_text(browser, text):
|
||||
assert text == BasePage(browser).get_page_footer_text()
|
||||
assert text == BasePage(browser).get_page_footer_text()
|
||||
|
||||
|
||||
@then(parsers.parse('the link in the page footer goes to "{url}"'))
|
||||
def verify_footer_link_url(browser, url):
|
||||
assert url == BasePage(browser).get_page_footer_link_url()
|
||||
assert url == BasePage(browser).get_page_footer_link_url()
|
||||
|
|
|
@ -57,13 +57,13 @@ Feature: Home Page
|
|||
And the page has a footer containing "Powered by Elemental Selenium"
|
||||
And the link in the page footer goes to "http://elementalselenium.com/"
|
||||
|
||||
# Scenario Outline: Open <page> page
|
||||
# When I click on the "<page>" link
|
||||
# Then the "<page>" page opens
|
||||
# Examples:
|
||||
# | page |
|
||||
# | Checkboxes |
|
||||
# | Dropdown |
|
||||
# | Dynamic Controls |
|
||||
# | Form Authentication |
|
||||
# | Inputs |
|
||||
Scenario Outline: Open <page> page
|
||||
When I click on the "<page>" link
|
||||
Then the "<page>" page opens
|
||||
Examples:
|
||||
| page |
|
||||
| Checkboxes |
|
||||
| Dropdown |
|
||||
| Dynamic Controls |
|
||||
| Form Authentication |
|
||||
| Inputs |
|
|
@ -9,11 +9,17 @@ class HomePage(BasePage):
|
|||
def PAGE_TITLE(self):
|
||||
return (By.TAG_NAME, 'h1')
|
||||
SUBHEADER = (By.TAG_NAME, 'h2')
|
||||
SUBPAGE_LINKS = (By.XPATH, '//*[@id="content"]/ul/li')
|
||||
SUBPAGE_LINKS = (By.XPATH, '//*[@id="content"]/ul/li/a')
|
||||
|
||||
def __init__(self, browser):
|
||||
self.browser = browser
|
||||
|
||||
def click_page_link(self, page_name):
|
||||
links = self.browser.find_elements(*self.SUBPAGE_LINKS)
|
||||
for link in links:
|
||||
if link.text.startswith(page_name):
|
||||
link.click()
|
||||
|
||||
def get_page_title_text(self):
|
||||
return self.browser.find_element(*self.PAGE_TITLE).text
|
||||
|
||||
|
@ -23,4 +29,7 @@ class HomePage(BasePage):
|
|||
def get_subpage_list(self):
|
||||
links = self.browser.find_elements(*self.SUBPAGE_LINKS)
|
||||
titles = [link.text.split(" (")[0] for link in links]
|
||||
return titles
|
||||
return titles
|
||||
|
||||
def get_current_url(self):
|
||||
return self.browser.current_url
|
||||
|
|
|
@ -1,9 +1,13 @@
|
|||
from pytest_bdd import scenarios, given, when, then, parsers
|
||||
from pytest_bdd import scenarios, when, then, parsers
|
||||
from pages.home import HomePage as page
|
||||
from sttable import parse_str_table
|
||||
from pages.base import BasePage
|
||||
|
||||
scenarios('../features/home_page.feature')
|
||||
|
||||
@when(parsers.parse('I click on the "{page_name}" link'))
|
||||
def click_page_link(browser, page_name):
|
||||
page(browser).click_page_link(page_name)
|
||||
|
||||
@then(parsers.parse('the page title is "{title}"'))
|
||||
def verify_page_title(browser, title):
|
||||
|
@ -20,3 +24,7 @@ def verify_subpage_list(browser, datatable, subpages):
|
|||
expected = parse_str_table(subpages)
|
||||
for field in expected.fields:
|
||||
assert expected.columns[field] == page(browser).get_subpage_list()
|
||||
|
||||
@then(parsers.parse('the "{page_name}" page opens'))
|
||||
def verify_page_opens(browser, page_name, navigate_to):
|
||||
assert navigate_to == page(browser).get_current_url()
|
||||
|
|
Loading…
Reference in New Issue