鱼C论坛

 找回密码
 立即注册
查看: 874|回复: 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 中只用一个方法调用不同的类实例的方法,则可以成功。

说了一大堆,代码如下:


  1. import unittest
  2. from framework.browser_engine import BrowserEngine
  3. from pageobjects.login_page import LoginPage
  4. from pageobjects.group_page import GroupPage


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

  8.     @classmethod
  9.     def setUpClass(cls):

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

  25.     def test_create_group(self):
  26.         """新增活动"""
  27.         self.group_page.create_group()
  28.         self.group_page.mapping_group_name()
  29.                
  30.         # 又回到第一个实例的方法
  31.     def test_logout(self):
  32.         """用户登出"""
  33.         self.login_page.logout()

  34.     @classmethod
  35.     def tearDownClass(cls):

  36.         cls.driver.quit()


  37. if __name__ == '__main__':
  38.     unittest.main()
复制代码



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

```

  1. import unittest
  2. from framework.browser_engine import BrowserEngine
  3. from pageobjects.login_page import LoginPage
  4. from pageobjects.group_page import GroupPage


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

  8.     @classmethod
  9.     def setUpClass(cls):

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

  20.         self.group_page.create_group()

  21.         self.group_page.mapping_group_name()

  22.     @classmethod
  23.     def tearDownClass(cls):

  24.         cls.driver.quit()


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

复制代码

```

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

项目结构 1

项目结构 1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-7 08:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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