Открытие и закрытие двух экземпляров браузера Firefox - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь открыть два разных URL рядом. Сначала, если открывается url1 делает некоторые проверки Затем он должен открыть url2 и сделать некоторые проверки Затем он должен закрыть как url1, так и url2 после выполнения тестов

Мне удалось открыть два url1 и url2, но tearDown закрывает только url2.

Я хочу, чтобы мой tearDown закрыл оба URL.

Это код, который я пробовал

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 и, следовательно, не может закрыть другой. Как я могу решить это?

1 Ответ

3 голосов
/ 26 июня 2019

это потому, что вы устанавливаете self.browser каждый раз, когда звоните setUp или 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...