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. Важно понять, что, поскольку тесты выполняются на одном хосте, а браузеры удалены от того, где выполняются тесты, вы также можете посмотреть на селеновую сетку.