【问题标题】:Opening and Closing two instances of Firefox Browser打开和关闭 Firefox 浏览器的两个实例
【发布时间】:2019-06-26 02:01:14
【问题描述】:

我正在尝试并排打开两个不同的网址。 首先如果打开 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()

上面的代码只是关闭了site_url2,我希望它也关闭其他的url。 似乎 self.browser 具有 site_url2 的值,因此无法关闭另一个。 我该如何解决?

【问题讨论】:

    标签: python selenium


    【解决方案1】:

    这是因为您每次调用setUpmore_loggin 时都设置了self.browser。 这意味着如果你调用一个函数,比如说setUp(),然后你调用more_loggin,你会丢失setUp创建的Firefox的实例,而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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      • 2020-10-10
      • 2013-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多