Селен "умирает" при посещении некоторых сайтов с использованием Behat / Mink
Я пытаюсь создать собственный сценарий в Behat / Mink, используя возможности Selenium для JavaScript, но столкнулся со странным препятствием. Я упустил все до мелочей, чтобы выложить проблему как можно проще, но в итоге при вызове метода visit() в Selenium некоторые веб-сайты работают нормально, но другие (включая мой собственный) выдают ошибку "Ошибка связи с удаленным браузер. Возможно, он умер." в том, что завершает сценарий.
В деталях:
Мой файл behat.yml выглядит так:
default:
paths:
features: features
bootstrap: %behat.paths.features%/bootstrap
extensions:
Behat\MinkExtension\Extension:
base_url: http://www.foo.bar
goutte: ~
selenium2:
browser: 'firefox'
В моем файле FeatureContext.php у меня есть следующие пользовательские функции:
public function iAmLoggedIn()
{
$session = $this->getSession();
$session->visit("http://www.foo.bar");
{
Теперь, когда я запускаю сценарий в Behat, который использует пользовательскую функцию, я получаю следующую ошибку:
PHP Fatal error: Uncaught exception 'WebDriver\Exception\UnknownError' with message 'Error communicating with the remote browser. It may have died.
Build info: version: '2.44.0', revision: '76d78cf', time: '2014-10-23 20:02:37'
Driver info: driver.version: EventFiringWebDriver' in /var/www/behat/vendor/instaclick/php-webdriver/lib/WebDriver/Exception.php:157
Stack trace:
#0 /var/www/behat/vendor/instaclick/php-webdriver/lib/WebDriver/AbstractWebDriver.php(140): WebDriver\Exception::factory(13, 'Error communica...')
#1 /var/www/behat/vendor/instaclick/php-webdriver/lib/WebDriver/Session.php(151): WebDriver\AbstractWebDriver->curl('DELETE', '')
#2 /var/www/behat/vendor/behat/mink-selenium2-driver/src/Behat/Mink/Driver/Selenium2Driver.php(292): WebDriver\Session->close()
#3 /var/www/behat/vendor/behat/mink/src/Behat/Mink/Session.php(70): Behat\Mink\Driver\Selenium2Dri in /var/www/behat/vendor/behat/mink-selenium2-driver/src/Behat/Mink/Driver/Selenium2Driver.php on line 294
Но вот странность: думая, что это могло быть проблемой с моим сайтом (www.foo.bar), я попробовал другой сайт, отредактировав строку в функции:
$session->visit("http://www.bbc.co.uk");
На этот раз ошибки нет и сценарий продолжается как обычно. Старый добрый BBC. Чтобы убедиться, что я также попробовал Goole:
$session->visit("http://www.google.com");
Но на этот раз я получаю точно такую же ошибку: "Ошибка связи с удаленным браузером. Возможно, он умер. Weird. Поэтому я пробую ряд других сайтов, некоторые работают нормально, другие возвращают эту ошибку. Кажется, нет никакого очевидного сходства между теми сайтами, которые убивают Selenium, и теми, которые не убивают. Так что же говорит Селен?
Вывод с сайта, который возвращает ошибку "Возможно, он умер":
11:41:41.428 INFO - Executing: [new session: Capabilities [{platform=ANY, browserVersion=8, browserName=firefox, deviceType=tablet, selenium-version=2.31.0, name=Behat test, browser=firefox, deviceOrientation=portrait, max-duration=300, version=8}]])
11:41:41.430 INFO - Creating a new session for Capabilities [{platform=ANY, browserVersion=8, browserName=firefox, deviceType=tablet, selenium-version=2.31.0, name=Behat test, browser=firefox, deviceOrientation=portrait, max-duration=300, version=8}]
11:41:44.024 INFO - Done: [new session: Capabilities [{platform=ANY, browserVersion=8, browserName=firefox, deviceType=tablet, selenium-version=2.31.0, name=Behat test, browser=firefox, deviceOrientation=portrait, max-duration=300, version=8}]]
11:41:44.031 INFO - Executing: [get: http://www.foo.bar//])
11:41:50.478 INFO - Executing: [delete all cookies])
11:41:50.494 INFO - Executing: [delete session: cee7cfa5-bc53-4804-a9a4-f6b52b0f48df])
Вывод с сайта, который не возвращает ошибку:
11:19:19.930 INFO - Executing: [new session: Capabilities [{platform=ANY, browserVersion=8, browserName=firefox, deviceType=tablet, selenium-version=2.31.0, name=Behat test, browser=firefox, deviceOrientation=portrait, max-duration=300, version=8}]])
11:19:19.936 INFO - Creating a new session for Capabilities [{platform=ANY, browserVersion=8, browserName=firefox, deviceType=tablet, selenium-version=2.31.0, name=Behat test, browser=firefox, deviceOrientation=portrait, max-duration=300, version=8}]
11:19:24.607 INFO - Done: [new session: Capabilities [{platform=ANY, browserVersion=8, browserName=firefox, deviceType=tablet, selenium-version=2.31.0, name=Behat test, browser=firefox, deviceOrientation=portrait, max-duration=300, version=8}]]
11:19:24.614 INFO - Executing: [get: http://www.bbc.co.uk/])
11:19:43.454 INFO - Done: [get: http://www.bbc.co.uk/]
11:19:43.463 INFO - Executing: [delete all cookies])
11:19:46.263 INFO - Done: [delete all cookies]
11:19:49.935 INFO - Executing: [delete all cookies])
11:19:49.955 INFO - Done: [delete all cookies]
11:19:50.389 INFO - Executing: [delete session: a092aa77-ad26-4f6f-8fc1-f290b688d7fa])
11:19:50.488 INFO - Done: [delete session: a092aa77-ad26-4f6f-8fc1-f290b688d7fa]
Никакой подсказки нет, за исключением того факта, что Selenium завершает "получение" bbc.co.uk, но не foo.bar. Так что насчет журналов доступа для foo.bar? Они кажутся нормальными
10.179.?.? - - [06/Jan/2015:10:52:57 +0000] "GET / HTTP/1.1" 401 486 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0"
10.179.?.? - tester [06/Jan/2015:10:52:57 +0000] "GET / HTTP/1.1" 200 33141 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0"
10.179.?.? - tester [06/Jan/2015:10:53:00 +0000] "GET /css/page_specific_css/index.css HTTP/1.1" 200 10234 "http://www.foo.bar/" "Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0"
10.179..?.? - tester [06/Jan/2015:10:53:00 +0000] "GET /library/jquery-tools.min.js HTTP/1.1" 200 5920 "http://www.foo.bar/" "Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0"
10,179.?.? Будучи IP-адресом CI-сервера, он нормально взаимодействует с сервером и получает все ресурсы. Так что я не уверен, что это проблема Selenium или Behat / Mink, но я в растерянности. Кажется, не существует логической причины, по которой некоторые сайты работают, а другие нет. Любая помощь будет принята с благодарностью.
1 ответ
Эта проблема возникает для меня, когда моя библиотека selenium lib и версия браузера не совместимы. В этом случае лучше всего обновить как браузер, так и библиотеку selenium до последней версии.