Python分裂器在测试执行后保持浏览器打开

时间:2015-11-13 21:37:45

标签: python-2.7 splinter

所以我正在尝试使用Splinter框架开始编写自动化测试。当我运行第一个方法时,浏览器就会关闭。我需要的是保持相同的浏览器打开,并允许我调用另一个将在该浏览器上操作的方法。我很困惑为什么它会关闭因为splinter有一个browser.quit(),我认为我不得不打电话来退出但是如下所示,我没有这样称呼它。

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","my@email") 
createOrder()

3 个答案:

答案 0 :(得分: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()

@ Gerrat的方法应该有效,但这是你可以采取的另一种方法。请注意setUptearDown方法,这些方法在每次测试后运行。

答案 1 :(得分:2)

由于您使用Browser作为上下文管理器,因此只要该块结束,您的浏览器就会关闭。如果要使用同一浏览器运行多个测试,则应在同一实例仍处于打开状态时调用测试。类似的东西:

def my_tests():
    with Browser('chrome') as browser:
        testLogin(browser, "ipaddress","my@email") 
        createOrder(browser)

有了这个,您需要更改其他功能的签名以接受浏览器参数。

答案 2 :(得分:0)

我遇到了同样的问题。但我已经解决了如下: 关键点是“全局b”,如果我删除此语句,浏览器将自动关闭,但如果有此,浏览器将保留。希望它有所帮助。

global b
b=Browser("chrome")

我仔细检查了Splinter的官方网站文档,它解释说如果你使用“with”风格,浏览器会在到达“with”语句之外的代码时自动关闭。

please visit below for details: