2015-11-13 120 views
1

所以我想開始編寫使用分裂框架的自動化測試。當我運行第一種方法時,瀏覽器會關閉。我需要的是保持打開同一瀏覽器,並允許我調用另一個將在該瀏覽器上運行的方法。我很困惑,爲什麼它結束,因爲分裂有一個browser.quit(),我認爲我將不得不打電話退出,但如下所示,我不打電話那樣。Python分裂保持瀏覽器在測試執行後打開

from splinter import Browser 

def testLogin(ipaddress, username): 
    global browser 
    with Browser('chrome') as browser: 
      url = "http://%s" % ipaddress 
      browser.visit(url) 
      browser.fill('EmailAddress', username) 
      browser.fill('Password','123456789') 
      button = browser.find_by_id('login') 
      button.first.click() 
      if browser.is_text_present('Summary of Orders'): 
       print("Pass: Login was succesful") 
      elif browser.is_text_present('There are currently no orders that are available for you to browse.'): 
       print("Pass: Login was succesful") 
      else: 
       print("Fail: Login was not succesful") 
return 

def createOrder(): 
    browser.find_by_id('nav-OrderModule-Create').first.click() 
    browser.fill('nameBox','test') 


testLogin("ipaddress","[email protected]") 
createOrder() 

回答

4

我以前遇到過這個問題。以下是我過去如何處理這個問題。

class LoginTest(unitest.TestCase): 
    def setUp(self): 
     self.browser = Browser('chrome') 

    def test_login_with_username_and_password(self): 
     ... 

    def tearDown(self): 
     self.browser.quit() 

@格拉特的方法應該可行,但這是另一種可以採取的方法。請注意0​​和tearDown方法,這些方法在每次測試後運行。

+0

是的。我最初的想法符合@ Gerrat的做法。但這很有趣,可能會長期運行得更好。謝謝。 – AwayFromMyDesk

2

由於您使用Browser作爲一個上下文管理器,只要是塊結束時,您的瀏覽器將關閉。如果你想用同一個瀏覽器運行多個測試,你應該在同一個實例仍然打開的情況下調用測試。例如:

def my_tests(): 
    with Browser('chrome') as browser: 
     testLogin(browser, "ipaddress","[email protected]") 
     createOrder(browser) 

有了這個,您需要更改其他函數的簽名以接受瀏覽器參數。

0

我遇到了同樣的問題。但我已經解決它如下: 關鍵點是「全球B」,如果我刪除此聲明,瀏覽器將自動關閉,但如果與此,瀏覽器將保留。希望能幫助到你。

global b 
b=Browser("chrome") 

我一倍分裂的官方網站的文檔檢查,它解釋說,如果你用「與」風格,瀏覽器會自動當它達到「與」語句外部的代碼封閉。

please visit below for details:

相關問題