我正在python中创建一个自动化框架,但我很难创建一个Web驱动程序的实例。 这是我的框架设计的摘录:
from selenium import webdriver class Driver: #creating a class variable Instance = None @staticmethod def Initialize(): Instance = webdriver.Firefox() return Instance
from Driver import Driver class LoginPage: @staticmethod def GoToURL(): Driver.Instance.get("sample url") @staticmethod def Login(): Driver.Instance.find_element_by_id("session_key-login").send_keys("sample@gmail.com") Driver.Instance.find_element_by_id("session_password-login").send_keys("sample_password") Driver.Instance.find_element_by_id("btn-primary").click()
问题是 Driver.Instance.get()或者 Driver.Instance.find_element ... 正在抛出错误。可能在这里没有识别Driver.Instance。
答案 0 :(得分:5)
我得到了我的问题的解决方案! 我没有在Driver.py文件中创建类变量,而是这样做:
from selenium import webdriver Instance = None def Initialize(): global Instance Instance = webdriver.Chrome("driver path") Instance.implicitly_wait(5) return Instance def CloseDriver(): global Instance Instance.quit()
我必须使用此实例的地方,我这样做:
import Driver class LoginPage: @staticmethod def GoToURL(): Driver.Instance.get("sample url") @staticmethod def Login(): Driver.Instance.find_element_by_id("session_key-login").send_keys("sample username") Driver.Instance.find_element_by_id("session_password-login").send_keys("sample password") Driver.Instance.find_element_by_id("btn-primary").click()
我运行此测试的文件是:
import unittest import Driver from LoginPage import LoginPage class LoginTest(unittest.TestCase): def setUp(self): Driver.Initialize() def testUserCanLogin(self): #Go to the login url LoginPage.GoToURL() #Enter username, password and hit sign in LoginPage.Login() #On the top right corner, check that correct user has logged in def tearDown(self): Driver.CloseDriver()
这就像魅力......