Py学习  »  Python

python&page对象:由于循环导入,其他页面无法继承公共部分

Назарій Кушнір • 3 年前 • 153 次点击  

在开发一个由几个页面组成的web应用程序的自动化框架示例时出现了问题。因此:

  1. 项目结构如下-所有页面类位于 pages 包装 ***_page.py 分开的文件
  2. 有一些常见的顶部菜单,用于登录用户的所有页面。此菜单包含导航到其中任何一个页面的按钮
  3. 为了避免代码重复,我创建了此菜单 TopPart 单独上课 pages\top_part.py 文件,其中包括按钮web元素和导航到相关页面的方法。因为每个方法都返回新的相关页对象,所以我需要将它们的类导入到 top_part.py
from selenium.webdriver.common.by import By
import pages.myinfo_page
import pages.time_page
import pages.admin_page
import pages.dashboard_page


class TopPart(object):

    def __init__(self, driver: WebDriver):
        self.driver = driver
        self.dashboard_module = self.driver.find_element(By.ID, "menu_dashboard_index")
        self.admin_module = self.driver.find_element(By.ID, "menu_admin_viewAdminModule")
        self.time_module = self.driver.find_element(By.ID, "menu_time_viewTimeModule")
        self.myinfo_module = self.driver.find_element(By.ID, "menu_pim_viewMyDetails")

    def to_dashboard_module(self):
        self.dashboard_module.click()
        return pages.dashboard_page.DashboardPage(self.driver)

    def to_admin_module(self):
        self.admin_module.click()
        return pages.admin_page.AdminPage(self.driver)

    def to_time_module(self):
        self.time_module.click()
        return pages.time_page.TimePage(self.driver)

    def to_myinfo_module(self):
        self.myinfo_module.click()
        return pages.myinfo_page.MyInfoPage(self.driver)
  1. 现在,要将这些用于所有特定的页面,即。 DashboardPage 我想继承 顶端 类,而我目前所知的将类设置为父类的唯一方法是直接 from dashboard_page 如下所示:
from selenium.webdriver.remote.webdriver import WebDriver
from pages.top_part import TopPart


class DashboardPage(TopPart):

    def __init__(self, driver: WebDriver):
        super().__init__(driver)

因此,由于循环导入而出现错误:

ImportError: cannot import name 'TopPart' from partially initialized module 'pages.top_part' (most likely due to a circular import)

  1. 有没有办法用绝对法 import pages.top_part 顶端 从类继承?只是 class DashboardPage(pages.top_part.TopPart): 不起作用
  2. 顶端 但我不知道是否可以实现,除了只在那里保留按钮web元素初始化,并将方法声明移动到pages类-这将导致每个页面都有大量重复的代码

?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/99360
 
153 次点击