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

Python splinter keeping browser open after test execution

所以我开始尝试使用 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()

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

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

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

我以前遇到过这个问题。以下是我过去处理此问题的方法。

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方法,每次测试后都是运行。

我遇到了同样的问题。但我已经解决如下: 关键点是"global b",如果我去掉这个语句,浏览器会自动关闭,但是如果有这个,浏览器会保留。希望对你有帮助。

global b
b=Browser("chrome")

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

please visit below for details: