I have feature file from where I am trying to get the email :
Scenario: Login to website
Given I navigate to Login page
When I click on login button
Then I redirected to login page
Then I enter valid "<Email>"
| Email |
| test |
When I click on Submit
I have below code in LoginPage.py :
from Base.BasePage import BasePage
from Base.WebDriverActions import Seleniumdriver
class LoginPage():
instance = None
@classmethod
def get_instance(cls):
if cls.instance is None:
cls.instance = LoginPage()
return cls.instance
def __init__(self):
self.driver = BasePage.get_driver()
def enterEmail(self, email):
self.driver.implicitly_wait(20)
self.driver.find_element_by_id("login").send_keys(email)
When I call the above method into steps :
from Base.BasePage import BasePage
from behave import step, Given, When, Then
from Pages.LoginPage import loginpage
@Given('I navigate to Login page')
def step_impl(Context):
BasePage.load_BaseURL();
@When('I click on login button')
def step_impl(Context):
loginpage.clickLoginLink()
@Then('I redirected to login page')
def step_impl(self):
print('Verifying user logged in..')
@Then('I enter valid "{Email}"')
def step_impl(Email):
loginpage.enterEmail(Email);
I have below error :
File "..\steps\Steps_Login.py", line 27, in step_impl loginpage.enterEmail(context, Email); TypeError: enterEmail() takes 1 positional argument but 3 were given
I tried by adding ** with an argument but no luck.