软件测试/测试开发丨Python 类的继承常见问题

点此获取更多相关资料

本文为霍格沃兹测试开发学社学员学习笔记分享
原文链接: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)

你可能感兴趣的:(python,开发语言,软件测试,自动化测试)