本文为霍格沃兹测试开发学社学员学习笔记分享
原文链接:https://ceshiren.com/t/topic/26681
python可以多层继承
login_page.py
class LoginPage:
def __init__(self,username,pwd):
self.username = username
self.pwd = pwd
# 初始化selenium driver
self.driver = webdriver.Chrome()
# todo: 隐士等待可能后续会和显示等待冲突
self.driver.implicitly_wait(3)
self.driver.get('url')
self.login()
def login(self):
pass
fc_firstPage.py
类FcfirstPage继承类LoginPage,由于没有重写初始化方法,可以直接继承父类方法
class FcfirstPage(LoginPage):
# 非车快速查询
def quickly_search(self,cust_id=None,phone_no=None):
pass
# 自己选择点击客户ID进入还是客户姓名
def entryCustinfo(self, cust_id=True):
pass
fcDifficultTask.py
类FcDifficultTask继承了类FcfirstPage,但是重写了初始化方法,那么就不能继承爷爷类的driver属性,会报错:FcDifficultTask没有driver属性
class FcDifficultTask(FcfirstPage):
def __init__(self,username,pwd):
self.fc_page = FcfirstPage(username,pwd)
self.driver = self.fc_page.driver
def fc_difficultTask(self):
self.quickly_search('1000452573063')
self.entryCustinfo()
# 报错,FcDifficultTask没有driver属性
self.driver.find_element(By.XPATH,"xx']").click()
self.driver.find_element(By.XPATH,"xx").click()
解决办法
使用super().init()方法,既可以把父类初始化的参数传递进入,下边的方法又能通过self直接引用driver属性(即为继承了爷爷类的属性)
fcDifficultTask.py
class FcDifficultTask(FcfirstPage):
def __init__(self,username,pwd):
super().__init__(username,pwd)