TypeError:BasePage.send_text() 缺少 1 个必需的仅关键字参数:'text'

问题描述 投票:0回答:1

我正在研究 Selenium 页面对象模型,我遇到了这个问题。我制作了基本页面,如下所示:

class BasePage(object):
    def __init__(self, driver):
        self.driver = driver

    def find_element(self, *locator):
        return self.driver.find_element(*locator)

    def send_text(self, *locator, text):
        element = self.find_element(*locator)
        element.send_keys(text)

我已经为我的一个页面创建了一个页面对象,如下所示:

class LandingPage(BasePage):
    USERNAME_EMAIL_FIELD = (By.ID, 'inputEmail')

    def __init__(self, driver):
          super().__init__(driver)

    def enter_user_name(self, username):
          self.send_text(self.USERNAME_EMAIL_FIELD, username)

从 BaseTest 页面调用方法时,如下所示:

home_page = LandingPage(web_driver)
home_page.login_user("userName", "userPassword")

我收到以下错误:

TypeError: BasePage.send_text() missing 1 required keyword-only argument: 'text'

any 参数怎么缺失了?

python-3.x selenium-webdriver typeerror asterisk
1个回答
0
投票

由于您定义了 args 参数

*locator
,因此您发送到
send_text
的每个值都将位于其
tuple
中。

locator
将是
(('id', 'inputEmail'), 'userName')
并且
text
不会收到任何值。

您需要显式向

text
参数发送值

self.send_text(self.USERNAME_EMAIL_FIELD, text=username)
© www.soinside.com 2019 - 2024. All rights reserved.