鱼C论坛

 找回密码
 立即注册
查看: 641|回复: 1

python导入多个类,如何在当前新类的不同方法中分别各自调用导入类的实例的方法?

[复制链接]
发表于 2020-4-13 16:13:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Sheldon墨鱼 于 2020-4-13 16:16 编辑

各位大神,我最近在学 python + selenium 的 webUI 自动化测试,
遇到一个关于python语法知识的问题:

如下图,是我的项目结构:



我在当前的 ./testCases/test.py 中引入了 ./pageobjects/group.py & login.py 这 2 个 py;

pageobjects下的两个 py 文档又继承了 ./framework/base.py 父类;

然后,test.py 在新类中对引入的类进行实例化,在新类的不同多个方法中分别各自调用类实例的方法。

程序报错,报错的内容是在执行第二个方法时,无法定位到元素。
而如果,我在 test.py 中只用一个方法调用不同的类实例的方法,则可以成功。

说了一大堆,代码如下:
import unittest
from framework.browser_engine import BrowserEngine
from pageobjects.login_page import LoginPage
from pageobjects.group_page import GroupPage


class CreateGroup(unittest.TestCase):
    """新增一个分组"""
    driver = None  # 定义一个全局的 driver

    @classmethod
    def setUpClass(cls):

        browser = BrowserEngine(cls)
        cls.driver = browser.open_browser(cls)
        cls.login_page = LoginPage(cls.driver)  # 引入的类的实例化
        cls.group_page = GroupPage(cls.driver)
                
# 新类的第一个方法,先用了第一个实例的方法
    def test_login(self):
        """登录"""
        self.login_page.login_account('jctest1', 'admin123')
        self.login_page.send_submit_btn()
        time.sleep(2)
                
# 第二个方法中,又用了第二个实例的方法
                
# [b]也就是在这里开始报错,无法定位的[/b]

    def test_create_group(self):
        """新增活动"""
        self.group_page.create_group()
        self.group_page.mapping_group_name()
                
        # 又回到第一个实例的方法
    def test_logout(self):
        """用户登出"""
        self.login_page.logout()

    @classmethod
    def tearDownClass(cls):

        cls.driver.quit()


if __name__ == '__main__':
    unittest.main()


而如果这个新类中只有一个方法,则可以成功定位到元素,如下:

```
import unittest
from framework.browser_engine import BrowserEngine
from pageobjects.login_page import LoginPage
from pageobjects.group_page import GroupPage


class CreateGroup(unittest.TestCase):
    """新增一个分组"""
    driver = None

    @classmethod
    def setUpClass(cls):

        browser = BrowserEngine(cls)
        cls.driver = browser.open_browser(cls)
        cls.loginpage = LoginPage(cls.driver)
        cls.group_page = GroupPage(cls.driver)
        
#这个方法里,既有实例 A,又有实例 B 的方法
    def test_create_group(self):
        """新增活动"""
        self.loginpage.login_account('jctest1', 'admin123')
        self.loginpage.send_submit_btn()

        self.group_page.create_group()

        self.group_page.mapping_group_name()

    @classmethod
    def tearDownClass(cls):

        cls.driver.quit()


if __name__ == '__main__':
    unittest.main()
```

所以,要怎么修改比较好呐?
先行谢过!

项目结构 1

项目结构 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-13 18:15:27 | 显示全部楼层
描述得很复杂,感觉是参数 driver 在传参过程不一致导致的。但是不知道怎么修改。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 10:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表