class BasePage:
    """所有页面类的基类,封装常用方法"""

    def __init__(self):
        driver_path = r"path"
        service = Service(driver_path)
        self.driver = webdriver.Chrome(service=service) 
        self.wait = WebDriverWait(self.driver, 10)

    def page_driver(self):
        """返回 driver 实例"""
        return self.driver

    def find_element(self, locator):
        """查找单个元素"""
        return self.wait.until(EC.presence_of_element_located(locator))

    def find_elements(self, locator):
        """查找多个元素"""
        return self.wait.until(EC.presence_of_all_elements_located(locator))

封装driver对象

class OperatePage(BasePage):
    def __init__(self):
        super().__init__()
        self.url = "http://10.251.22.80:3002/"

    def get_table_list(self,table_list):
        table_data = []
        for row in table_list:  # 遍历所有行(包括标题行)
            row_data = []
            cells = row.find_elements(By.TAG_NAME, 'td')  # 获取单元格
            if not cells:  # 如果是标题行,可能用的是th标签
                cells = row.find_elements(By.TAG_NAME, 'th')
            for cell in cells:
                row_data.append(cell.text)
            if row_data and any(cell.strip() for cell in row_data):  # 至少有一个非空单元格
                table_data.append(row_data)
        return table_data

继承driver对象

def debgcase():
    operate_page = OperatePage()
    driver = operate_page.driver
    driver.maximize_window()
    driver.get(operate_page.url)
    sleep(5)
    table = driver.find_element(By.CLASS_NAME, 'ant-table-container')
    rows = table.find_elements(By.TAG_NAME, 'tr')
    print(f"找到 {len(rows)} 行数据")
    table_data = operate_page.get_table_list(rows)
    for col in table_data:
        print(col)
    driver.quit()

在别的类中调用driver属性

更多推荐