如何在python中创建单个webdriver实例?

时间:2015-05-30 07:49:07

标签: python selenium-webdriver

我正在python中创建一个自动化框架,但我很难创建一个Web驱动程序的实例。 这是我的框架设计的摘录:

  1. 一个单独的Driver.py,其中包含用于创建Web驱动程序实例的设置
  2. from selenium import webdriver
    
    class Driver:
        #creating a class variable
        Instance = None
    
            @staticmethod
            def Initialize():
                Instance = webdriver.Firefox()
                return Instance
    
    1. 在框架的所有区域使用此文件,例如:
    2. 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。

1 个答案:

答案 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()

这就像魅力......