CFSelenium "Не удалось запустить новую сессию браузера"

У меня возникают проблемы с CFSelenium/TestBox. Im, развивающийся на виртуальной машине Windows 7, Coldfusion 10. Я загрузил новую копию cfselenium из https://github.com/teamcfadvance/CFSelenium/archive/master.zip.

Моя файловая структура

wwwroot |
  cfselenium |
    Selenium-RC |
        Selenium-server-standalone-2.46.0.jar
    Selenium.cfc
    Server.cfc
  Testbox |
    … various testbox files
   MySite |
    Tests|
        Specs |
            … my test files
            seleniumtest.cfc
        Application.cfc
        Index.cfm

MySite/Test/Application.cfc включает в себя сопоставления как для testbox/, так и для cfselenium/.

Набор тестов, seleniumtest.cfc расширяет testbox.system.BaseSpec, а его функции beforeAll() и afterAll() создают экземпляр селена, запускают его и срывают:

component extends="testbox.system.BaseSpec" {

function beforeAll( ){
        // create Selenium class
        selenium = new cfselenium.Selenium();
        // Start it up.
        selenium.start( "mysite", "*chrome" );
    }

    // executes after all suites+specs in the run() method
    function afterAll(){
        selenium.stop();
        selenium.stopServer();
    }

function run( testResults, testBox ){
    describe('selenium', function(){
        // hello world equivalent
        describe('equality', function(){
            it('true should be true', function(){
                expect( true ).toBe(true);
            });
        });
    });
}
}

Новое поведение: при передаче следующего файла selenium.start():

selenium.start( "https://www.google.com", "*googlechrome" );

Я получаю следующую ошибку:

Ответ Selenium RC недействителен: не удалось запустить новый сеанс браузера: java.lang.RuntimeException: org.openqa.selenium.os.WindowsRegistryException: проблема при управлении реестром, версия ОС "6.1", regVersion1 = false Информация о сборке: версия: '2.42.2', версия: '6a6995d', время: '2014-06-03 17:42:03' Системная информация: host: 'myhostname', ip: 'myvm_ip_address', os.name: "Windows 7", os.arch: "amd64", os.version: "6.1", java.version: "1.7.0_67" Информация о драйвере: driver.version: unknown

Для всех других версий url или браузера я перехожу к selenium.start() (я пробовал '* chrome', '* firefox', '* iexplore', '* iexploreproxy'), я получаю следующую ошибку:

Ответ Selenium RC недействителен: не удалось запустить новый сеанс браузера: org.openqa.selenium.server.RemoteCommandException: ошибка при запуске браузера

Из трассировки стека я вижу, что он не работает в selenium.DoCommand().

С другого сообщения SO было высказано предположение, что если порт 4444 в настоящее время используется, он может помешать серверу selenium-RC. Я перезапустил свою виртуальную машину и подтвердил, что порт 4444 не используется, запустив

Netstat –an | find "4444"

После повторного запуска набора тестов запуск netstat с той же командой показал

TCP    0.0.0.0:4444           0.0.0.0:0              LISTENING
TCP    127.0.0.1:4444         127.0.0.1:49209        ESTABLISHED
TCP    127.0.0.1:49209        127.0.0.1:4444         ESTABLISHED
TCP    [::]:4444              [::]:0                 LISTENING
TCP    [::1]:4444             [::1]:49208            ESTABLISHED
TCP    [::1]:49208            [::1]:4444             ESTABLISHED

Из просмотра журналов cf я вижу следующее:

29 апреля 2016 года 09:44:23 AM Информация [ajp-bio-8012-exec-3] - Запуск HTTP-запроса {URL = ' http://localhost: 4444/selenium-server/driver/ ', method =' POST '}

Предполагается, что папка selenium-server под wwwroot? Это webdriver?

РЕДАКТИРОВАТЬ: Ответ на Dan, я загрузил chromedriver_win32 из http://chromedriver.storage.googleapis.com/index.html?path=2.21/, извлеченный в C:\Program Files (x86)\chromedriver, добавил это к моей PATH и перезагрузил виртуальную машину. После изменения драйвера с '* googlechrome' на '* chrome', похоже, он работает... Я смог успешно выполнить следующий тест:

function testIncludes(){
      selenium.open("https://www.google.com");
      $assert.isEqual("Google", selenium.getTitle());
 }

Итак, я думаю, что мы здесь.

Похоже, что IE-драйвер также работает.

Ответ 1

Selenium не может запускать Chrome без Chrome Driver (поскольку Chrome больше не является частью webkit), и Selenium может запускать браузеры веб-браузера по умолчанию. Вы должны иметь возможность запускать Firefox (если он установлен) без каких-либо дополнительных двоичных файлов.

Чтобы работать с Chrome, вам нужно будет сделать следующее:

  • Загрузите загрузочный диск chrome.
  • Добавьте его на свой путь.
  • Selenium должен иметь возможность запускать браузер.

В коде могут быть некоторые другие проблемы, но я чувствую, что комментарии предоставили достаточно отзывов в этом отношении.

Вы можете скачать драйвер из: https://sites.google.com/a/chromium.org/chromedriver/downloads

ОБНОВЛЕНО

IE требует также драйвера:

Сервер драйверов Internet Explorer Это необходимо, если вы хотите использовать последние и самые лучшие функции WebDriver InternetExplorerDriver. Пожалуйста, убедитесь, что это доступно в вашей $PATH (или% PATH% в Windows), чтобы драйвер IE работал так, как ожидалось.

Загрузить версию 2.53.0 для (рекомендуется) 32-разрядная версия Windows IE или 64-битный Windows IE

Вышеизложенное было: http://www.seleniumhq.org/download/ в отношении водительских окон. Кажется, что хост с браузером должен запускать веб-драйвер Selenium специально для IE

Firefox также публикует собственный драйвер:

Драйвер Firefox включен в selenium-server-stanalone.jar, доступный в загрузках. Драйвер поставляется в виде xpi (расширение firefox), которое добавляется в профиль firefox при запуске нового экземпляра FirefoxDriver.

Более подробную информацию можно найти здесь. Он работает аналогично драйверам Chrome и IE. Важно понять, что, поскольку тесты выполняются на одном хосте, а браузеры удалены от того, где выполняются тесты, вы также можете посмотреть на селеновую сетку.