Как запустить один тест веб-драйвера Python в нескольких браузерах

Я тестирую BrowserStack и имею небольшой набор тестов Selenium WebDriver, написанных на Python. Моя цель — запустить тесты в нескольких разных браузерах. В настоящее время я использую требуемые_возможности для указания браузера, версии, ОС и т. д.

Что было бы хорошим способом повторить тест с другим браузером, не имея кучу разных файлов py?

Вот как настраиваются тесты:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import unittest, time, re


desired_cap = {'browser': 'Chrome', 'browser_version': '33.0', 'os': 'OS X', 'os_version': 'Mavericks', 'resolution': '1600x1200'}
desired_cap['browserstack.debug'] = True

class RegWD(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Remote(
        command_executor='http://browserstackstuff.com',
        desired_capabilities=desired_cap)
        self.base_url = "http://blahtestsite.com/"

person mndrbbr    schedule 24.03.2014    source источник
comment
Что является хорошим способом, действительно зависит от мнения разработчика. Что для одного хороший путь, для другого плохой путь. И сделать это можно десятками разных способов. Итак, вопрос, который у вас есть в настоящее время, не подходит для SO.   -  person Louis    schedule 25.03.2014


Ответы (1)


Вы можете попробовать это так:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import unittest, time, re


desired_cap = []
desired_cap.append({'browser': 'Chrome', 'browser_version': '33.0', 'os': 'OS X', 'os_version': 'Mavericks', 'resolution': '1600x1200'})
desired_cap.append({'browser': 'Firefox', 'browser_version': '27.0', 'os': 'OS X', 'os_version': 'Mavericks', 'resolution': '1600x1200'})

class RegWD(unittest.TestCase):
    def setUp(self):
        for driver_instance in desired_cap:
            driver_instance['browserstack.debug'] = True
            self.driver = webdriver.Remote(
            command_executor='http://browserstackstuff.com',
            desired_capabilities=driver_instance)
            self.base_url = "http://blahtestsite.com/"

Просто создайте tuple, чтобы добавить в него все версии браузера, которые вы хотите. Добавьте цикл, который циклически проходит через каждый экземпляр браузера. мне пришлось переехать

desired_cap['browserstack.debug'] = True

извне класса, к следующему внутри класса

driver_instance['browserstack.debug'] = True

потому что скобки делают это странным. Для вызова конкретного экземпляра требуется целое число между [] . Вместо того, чтобы создавать цикл вне класса, чтобы установить для каждого экземпляра значение True, я просто переместил строку в класс, чтобы она выполнялась для каждого экземпляра браузера.

person ExperimentsWithCode    schedule 26.03.2014
comment
Я думаю, что ваш self.driver всегда будет последним элементом в вашем кортеже desired_cap по мере завершения метода setUp() - весь ваш тест будет выполняться только с этим драйвером последнего элемента. - person Nam G VU; 26.05.2017