马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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()
```
所以,要怎么修改比较好呐?
先行谢过!
|