【发布时间】:2018-04-10 10:34:55
【问题描述】:
我想使用函数和类创建一个 selenium 测试。第一个文件和第一个类是:
import unittest
import time
from selenium import webdriver
class DriverAndLogin(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.maximize_window()
def test_login(self):
driver = self.driver
driver.get('https://qa.knolyx.com/')
self.assertIn("Login to your account | Knolyx", driver.title)
time.sleep(1)
search_box = driver.find_element_by_name('email')
search_box.send_keys('username@test.com')
password = driver.find_element_by_name('password')
password.send_keys("98765")
button_login = driver.find_element_by_css_selector('#app > div > div > form > div.Login_Actions > button')
button_login.click()
time.sleep(1)
self.assertIn("Dashboard | Knolyx", driver.title)
if __name__ == "__main__":
unittest.main()
我想创建另一个文件和类来继续第一个文件和类。因此,上面的代码访问 Knolyx 站点并登录,我想从登录转发继续我的第二个文件。 我试过了:
from SeleniumOOP import DriverAndLogin
import unittest
import time
class ChangeRole(unittest.TestCase, DriverAndLogin):
但变量“self.driver”或“driver”在第二个文件中不可见。
附注: 我试过了:
from SeleniumOOP.DriverAndLogin import DriverAndLogin
import unittest
from selenium import webdriver
class ChangeRole(unittest.TestCase, metaclass=DriverAndLogin):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.maximize_window()
def see_the_role(self):
driver = self.driver
therole = driver.find_element_by_class_name('Person_Title').text
print(therole)
if __name__ == "__main__":
unittest.main()
但我收到错误:“TypeError:元类冲突:派生类的元类必须是其所有基类的元类的(非严格)子类”
【问题讨论】:
-
"我想创建另一个文件和类以继续第一个文件和类" => 我不确定你真正是什么意思,但有一件事是当然:“继续一个文件和课程”没有意义(这是一个语法正确的句子,但与“我希望我的 rhodoid 种植拖拉机并压扁大海”一样明智)。
-
另外我不确定你是否真的理解继承是什么以及如何使用它(更不用说元类了)。
-
@brunodesthuilliers 我的第一堂课在登录后停止了,我想创建一个类来调用第一堂课并继续这个!因此,在第二类(和文件)中,我想运行第一类 + 另一个代码,该代码从它所在的位置继续第一类。现在你明白了吗?
-
“我的第一堂课在登录后停止”和“从它停留的地方继续第一堂课的代码”没有意义。一个类不会“停止”,也不会“停留”在任何地方。我了解您想要做什么-首先测试您可以登录,然后测试您是否已登录可以“看到角色”,但这与“课程停止”或“课程继续”无关第一堂课留在哪里”。
标签: python function class selenium oop