Подтвердить что ты не робот

Есть ли способ ускорить загрузку сервера Selenium Server?

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

Это просто вопрос о перемещении кода ниже вне вашей тестовой установки и в настройке прибора и сохранении глобального экземпляра селена (код предполагает 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");
}

Ответ 3

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

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

Ответ 4

Используя 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();
        }

Ответ 5

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

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

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

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);