Есть ли способ ускорить время загрузки Selenium Server? - PullRequest
16 голосов
/ 03 апреля 2009

По своему дизайну Selenium создает новую копию вашего профиля Firefox при каждом запуске нового теста. Я считаю, что это время копирования является узким местом, особенно при выполнении сотен тестов. (5-15 секунд, чтобы скопировать профиль заново).

Кто-нибудь знает о каком-либо поведении переопределения для этого? Я бы предпочел, чтобы мой сервер Selenium просто использовал один и тот же профиль Firefox. Я знаю, что это нарушает философию «точно настроить ваши тестовые данные», но я хочу воспользоваться этим ярлыком, поскольку мои тесты не меняют моего профиля Firefox настолько, чтобы поставить под угрозу будущие тесты.

Ответы [ 5 ]

8 голосов
/ 07 апреля 2009

Я согласен, что это проблема. Приятно иметь новую копию процесса Firefox каждый раз, но немного излишним, чтобы удвоить время запуска путем регенерации профиля Firefox. Если вы откроете сообщение об ошибке на http://jira.openqa.org и напишите мне по адресу patrick@browsermob.com, я буду рад убедиться, что мы нашли решение.

PS: я решил эту проблему как раз для себя. Мы используем тот же профиль Firefox и просто уничтожаем кеш и куки. Но я действительно должен просто исправить это изменение на источнике Selenium.

6 голосов
/ 03 апреля 2009

Это просто вопрос перемещения приведенного ниже кода за пределы вашей тестовой установки в настройку прибора и сохранения глобального экземпляра селена (код предполагает NUnit.)

[TestFixtureSetUp()]
public void FixtureSetup()
{
    selenium = New DefaultSelenium("localhost", 4444, "*firefox", "http://localhost/");
    selenium.Start();
    selenium.SetTimeout("30000");
    selenium.Open("/");
}

Ваша тестовая установка должна выглядеть примерно так:

[SetUp()]
public void SetUpTest()
{
    selenium.Open("default.aspx");
    selenium.WaitForPageToLoad("30000");
}
1 голос
/ 15 февраля 2014

Один небольшой способ уменьшить время загрузки профиля - удалить файлы большего размера из профиля Firefox. Для этого настройте свой профиль, выполнив команду firefox.exe -p. Как только профиль будет создан, зайдите в настройки и отключите кеширование и другой пух, который не нужен для веб-тестов. Затем скопируйте свой профиль в новое место и удалите файлы sql, которые не нужны. (в противном случае, когда вы снова откроете его, вы восстановите удаленные файлы, которые будут очень маленькими). Когда вы начнете тест на селен, укажите свой профиль в новом месте. До этого я копировал профиль размером 50 МБ при каждом запуске теста, а теперь он копирует профиль размером 3-4 МБ, и время запуска практически мгновенно.

Опять же, это не способ снова использовать тот же профиль, но это уменьшит время копирования каждого профиля.

0 голосов
/ 07 октября 2013

Хотя это старый вопрос сейчас !! Сервер Selenium или RC устарел, но та же проблема сохраняется с Selenium Webdriver. Для запуска Firefox через веб-драйвер требуется около 30 секунд.

Но, как объяснено здесь, некоторые люди обошли это "После отключения неиспользуемых сетевых адаптеров (находится в Панели управления \ Сеть и Интернет \ Сетевые подключения)

это застряло в точке:

ExtensionConnection connection = connectTo(exe.binary, profileToUse, "localhost");

https://groups.google.com/forum/#!topic/selenium-users/a2fNfF-mD_E

Хотя это не сработало для меня, но можно попробовать это наверняка !!

Другой выход может быть:

FirefoxProfile profile = new FirefoxProfile();
FirefoxBinary binary = new FirefoxBinary(@"path\to\firefox.exe");
FirefoxDriver driver = new FirefoxDriver(binary,profile);
0 голосов
/ 10 июля 2012

Используя MSTest, я смог заставить драйвер открывать только одно окно Firefox для всех тестов, а не открывать и закрывать новое окно для каждого теста, инициализируя WebDriver в ClassInitializeCleanup), а не TestInitialize:

static string path;
        static IWebDriver driver;
        static string baseURL;

        [ClassInitialize]
        public static void ClassInitialize(TestContext context) {
            DirectoryInfo di = new DirectoryInfo(Directory.GetCurrentDirectory());
            path = Path.Combine(di.Parent.Parent.Parent.FullName, "Tests\\bin\\debug\\");
            driver = new FirefoxDriver();
            baseURL = "http://localhost:5555/";
        }

        [ClassCleanup]
        public static void ClassCleanup() {
            driver.Quit();
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...