我试图并排打开两个不同的网址。首先如果打开 url1 做一些检查然后它应该打开 url2 并做一些检查然后它应该在完成测试后关闭 url1 和 url2
我已经能够打开两个 url1 和 url2 但tearDown 只关闭了 url2。
我希望我的tearDown 关闭两个网址。
这是我试过的代码
class Login(unittest.TestCase):
site_url1 = "https://www.google.com/"
site_url2 = "https://www.facebook.com/"
def setUp(self):
# create a new Firefox session
self.browser = webdriver.Firefox()
browser = self.browser
browser.get(self.site_url1)
def more_loggin(self):
# create a new Firefox session
self.browser = webdriver.Firefox()
browser = self.browser
browser.get(self.site_url2)
def tearDown(self):
self.browser.quit()
Run Code Online (Sandbox Code Playgroud)
上面的代码只是关闭了 site_url2,我希望它也关闭另一个 url。似乎 self.browser 具有 site_url2 的值,因此无法关闭另一个。我该如何解决?
这是因为您self.browser每次调用setUpor时都会设置more_loggin。这意味着,如果你调用一个函数,让我们说setUp(),然后你打电话more_loggin,你失去的情况下Firefox,其被创造setUp,并self.browser得到一个新的实例,在开始时创建more_loggin。
当您调用 时tearDown,只有存储在其中的最后一个实例self.browser会关闭,所有其他实例将保持打开状态。
我建议您将所有实例保存在一个列表中,在类级别定义,然后tearDown迭代每个实例并关闭它。
class Login(unittest.TestCase):
instances = []
site_url1 = "https://www.google.com/"
site_url2 = "https://www.facebook.com/"
def openFirefox(self):
# create a new Firefox session
firefox = webdriver.Firefox()
# save session in instances
self.instances.append(firefox)
# return the session
return firefox
def setUp(self):
browser = self.openFirefox()
browser.open(self.site_url1)
def more_loggin(self):
browser = self.openFirefox()
browser.open(self.site_url2)
def tearDown(self):
for browser in self.instances:
# close every instance in instances
browser.quit()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |