Я лучше еще раз опишу полностью.
login.feature
Feature: Вход
Scenario: Вход пользователя
Given Перехожу на страницу входа в ПО
When Првоеряю, что я на главной ищу title "XXX"
Then Ввожу логин "rmfalx"
Then Ввожу пароль "123"
Then Ввожу код подразделения "777"
Then Нажимаю кнопку "Войти в систему"
And Проверяю в header наличие имя пользователя "Rmfalx"
Затем перевожу шаги в код в файле login_steps.py
from nose.tools import assert_equal, assert_true
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
@step('Перехожу на страницу входа в ПО')
def step_impl(context):
context.login_page.navigate("http://xxx.ru/")
@step('Првоеряю, что я на главной ищу title "{search_title}"')
def step_impl(context, search_title):
assert_equal(context.login_page.get_page_title(), search_title)
@step('Ввожу логин "{login_term}"')
def step_impl(context, login_term):
context.login_page.login(login_term)
@step('Ввожу пароль "{password_term}"')
def step_impl(context, password_term):
context.login_page.password(password_term)
@step('Ввожу код подразделения "{code_division_term}"')
def step_impl(context, code_division_term):
context.login_page.code_division(code_division_term)
#time.sleep(5)
@step('Нажимаю кнопку "Войти в систему"')
def step_impl(context):
context.login_page.signin_button()
@step('Проверяю в header наличие имя пользователя "{search_user}"')
def step_impl(context, search_user):
assert_equal(context.main_title.find_user_name(search_user), search_user)
В файле login_page.py описана страница логина
from selenium.webdriver.common.by import By
from browser import Browser
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
class LoginPageLocator(object):
# Элементы страницы входа
LOGIN_FIELD = (By.ID, "ext-comp-1001") #Поле логин
PASSWORD_FIELD = (By.ID, "ext-comp-1002") #Поле пароль
CODE_DIVISION_FIELD = (By.ID, "ext-comp-1003") #Поле код подразделения
BUTTON_SIGNIN = (By.ID, "ext-gen34") #Кнопка войти
class LoginPage(Browser):
# Действия на странице входа в ПО
def navigate(self, address): #Переход на страницу входа
self.driver.get(address)
def get_page_title(self): #Получаем тайтл страницы для проверки
return self.driver.title
def login(self, login_term): #Находим поле ввода логина
self.fill(login_term, *LoginPageLocator.LOGIN_FIELD)
def fill(self, text, *locator): # Заполняем поля логина, пароля и кода подразделения
self.driver.find_element(*locator).send_keys(text)
def password(self, password_term): # Находим поле ввода пароля
self.fill(password_term, *LoginPageLocator.PASSWORD_FIELD)
def code_division(self, code_division_term): #Находим поле ввода Кода подразделения
self.fill(code_division_term, *LoginPageLocator.CODE_DIVISION_FIELD)
def signin_button(self): #Находим кнопку войти
self.click_element(*LoginPageLocator.BUTTON_SIGNIN)
def click_element(self, *locator): #Нажимаем кнопку войти
self.driver.find_element(*locator).click()
а в файле home_page.py описана страница, которая идет следом после логина
from selenium.webdriver.common.by import By
from browser import Browser
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
class MainTitleLocator(object):
# Элементы страницы входа
USER_NAME = (By.XPATH, "//b[text()='Rmfalx']")
class MainTitle(Browser):
def get_element(self, *locator):
return self.driver.find_element(*locator)
def find_user_name(self, search_user):
return self.get_element(By.XPATH, search_user)
Так же есть файлы с настройками enviroment.py
from selenium import webdriver
from browser import Browser
from pages.home_page import HomePage
from pages.search_results_page import SearchResultsPage
from pages.login_page import LoginPage
from pages.main_title import MainTitle
def before_all(context):
context.browser = Browser()
context.home_page = HomePage()
context.search_results_page = SearchResultsPage()
context.login_page = LoginPage()
context.main_title = MainTitle()
def after_all(context):
context.browser.close()
И browser.py
from selenium import webdriver
class Browser(object):
driver = webdriver.Chrome()
driver.implicitly_wait(30)
driver.set_page_load_timeout(30)
driver.maximize_window()
def close(context):
context.driver.close()
Все шаги проходят, кроме последней првоерки(