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 的方法应该有效,但这是您可以采用的另一种方法。注意setUp
和tearDown
方法,每次测试后都是运行。
我遇到了同样的问题。但我已经解决如下:
关键点是"global b",如果我去掉这个语句,浏览器会自动关闭,但是如果有这个,浏览器会保留。希望对你有帮助。
global b
b=Browser("chrome")
而且我仔细查看了Splinter的官网文档,它解释说如果你使用"with"风格,浏览器会在到达"with"语句之外的代码时自动关闭。
所以我开始尝试使用 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 的方法应该有效,但这是您可以采用的另一种方法。注意setUp
和tearDown
方法,每次测试后都是运行。
我遇到了同样的问题。但我已经解决如下: 关键点是"global b",如果我去掉这个语句,浏览器会自动关闭,但是如果有这个,浏览器会保留。希望对你有帮助。
global b
b=Browser("chrome")
而且我仔细查看了Splinter的官网文档,它解释说如果你使用"with"风格,浏览器会在到达"with"语句之外的代码时自动关闭。