我正在研究 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 参数怎么缺失了?
由于您定义了 args 参数
*locator
,因此您发送到 send_text
的每个值都将位于其 tuple
中。
locator
将是 (('id', 'inputEmail'), 'userName')
并且 text
不会收到任何值。
您需要显式向
text
参数发送值
self.send_text(self.USERNAME_EMAIL_FIELD, text=username)