首页 > 解决方案 > 调用方法时出现参数错误

问题描述

我有要从中获取电子邮件的功能文件:

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

我在 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)

当我将上述方法称为步骤时:

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);

我有以下错误:

  File "..\steps\Steps_Login.py", line 27, in step_impl
      loginpage.enterEmail(context, Email);
  TypeError: enterEmail() takes 1 positional argument but 3 were given

我尝试添加带有参数的 **,但没有运气。

标签: pythonpython-behave

解决方案


您正在调用enterEmail,因为loginpage.enterEmail(context, Email)您正在将参数传递给方法,如下所示

  1. 语境
  2. 电子邮件
  3. 自我上课登录页面

如果可行,请尝试删除登录页面或上下文。


推荐阅读