2015-11-13 90 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:

相关问题