web自动化随笔
一、面向对象继承和表格行封装的常见设计模式
1、类结构
class BaseRow(WebPage):def __init__(self, driver, row_index, table):self.driver = driverself.row_index = row_indexself.table = tableclass ProductTableRow(BaseRow):
- BaseRow是基类,初始化需要driver,row_index,table
- ProductTableRow会继承基类的属性
2、ProductTable是表格类,传了行类给基类BaseRow
class ProductTable(BaseTable):def __init__(self, driver):super().__init__(driver, "//*[@id='testcase']", ProductTableRow, ProductTablHeaders)
3、BaseTable逻辑
class BaseTable(WebPage):def __init__(self, driver, table_locator, row_class, headers):self.driver = driverself.table_locator = table_locatorself.row_class = row_classself.headers = headersself.rows = [] # 行实例列表def get_row_by_index(self, index):return self.row_class(self.driver, index, self)
- row_class是一个可以调用的类,正常初始化的时候,会把row_index和table传进去
- 所以ProductTableRow没有直接传row_class和table,是在BaseTable或者其他地方里动态传的
- 未完待续