下面是pythonpage_object
文档中的示例:
from page_objects import PageObject, PageElement
from selenium import webdriver
class LoginPage(PageObject):
username = PageElement(id_='username')
password = PageElement(name='password')
login = PageElement(css='input[type="submit"]')
driver = webdriver.PhantomJS()
driver.get("http://example.com")
page = LoginPage(driver)
page.username = 'secret'
page.password = 'squirrel'
assert page.username.text == 'secret'
page.login.click()
困扰我的是我们创建了一个LoginPage
,并向它的构造函数提供了一个driver
,但是我们没有在LoginPage
类中定义{
这是否意味着父类PageObject
的构造函数是用driver
参数调用的?我认为python不会隐式调用父级的构造函数?在
__init__
方法只是一个方法,因此python对它执行的查找与其他方法相同。如果类B
没有定义方法/属性x
,那么python会查找它的基类A
等等,直到找到属性/方法或失败为止。在一个简单的例子:
__init__
也是一样:因为LoginPage
没有定义__init__
,python查找PageObject
类并在那里找到它的定义。在当我们说“python不隐式调用父类构造函数”时,意思是如果定义一个
__init__
方法,解释器将只调用该方法,而不是调用所有父类__init__
,因此,如果要调用父类构造函数,则必须显式地调用。在注意这些类别之间的差异:
^{pr2}$相关问题 更多 >
编程相关推荐