public class Test_purchases_prod_cab {
private WebDriver driver;
private boolean acceptNextAlert = true;
private StringBuffer verificationErrors = new StringBuffer();
@Before
public void setUp() throws Exception {
driver = new PhantomJSDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
Если из консоли запускаю тесты руками, указав mvn clean test site - то все ОК.
Если запуск тестов выполняется по крону (запускается скрипт, в котором по сути прописано что дожна быть выполнена команда mvn clean test site ), то получаю вот такую ошибку :
FAILURE! testBuyCabProd_1year(Test_purchases_prod_cab) Time elapsed: 21.873 sec <<< ERROR! org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure. Build info: version: ‘2.53.0’, revision: ‘35ae25b1534ae328c771e0856c93e187490ca824’, time: ‘2016-03-15 10:43:46’ os.name: ‘Mac OS X’, os.arch: ‘x86_64’, os.version: ‘10.11.5’, java.version: ‘1.8.0_91’ Driver info: driver.version: PhantomJSDriver at java.util.concurrent.FutureTask.get(FutureTask.java:205) at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:130) at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:80) at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:175) at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:166) at org.openqa.selenium.phantomjs.PhantomJSCommandExecutor.execute(PhantomJSCommandExecutor.java:78) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:644) at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:249) at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:131) at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:144) at org.openqa.selenium.phantomjs.PhantomJSDriver.(PhantomJSDriver.java:115) at org.openqa.selenium.phantomjs.PhantomJSDriver.(PhantomJSDriver.java:104) at org.openqa.selenium.phantomjs.PhantomJSDriver.(PhantomJSDriver.java:94) at Test_purchases_prod_cab.setUp(Test_purchases_prod_cab.java:40) testBuyCabProd_1year(Test_purchases_prod_cab) Time elapsed: 21.878 sec <<< ERROR! java.lang.NullPointerException: null at Test_purchases_prod_cab.tearDown(Test_purchases_prod_cab.java:866)
при этом если использую Firefox driver по крону тесты запускаются и проходят нормально.
Помогите пожалуйста разобраться в чем у меня проблема с PhantomJS? Я никак не могу понять, почему запуск тестов руками проходит нормально, а по расписанию через скрипт валится - в чем разница?
И это я тоже пробовал. Как и впринципе все чтотя смог найти за сутки в интернете. Вся бредовость этой ситуации в том, что тесты ведь запускаются, и запускаются если я скрипт запускаю руками, а вот как только скрипт на выполнение тестов запускает крон, все отваливается
Проблема решена, всем кто откликнулся спасибо.
Решение оказалось банальным:
У меня сегодня обновился firefox на 47ю версию, и у меня начали отваливаться тесты, с точно такими же ошибками что и на phantomjs. При этом при запуске теста, firefox запускался и тут же крешился. Откатился на 46 версию и все стало норм. Эта ситуация натолкнула меня на мысль, что и с phantomjs происходит тоже самое. Попробовав версии 2.1.1 , 2.0.0, 1.9.6, 1.9.7 и 1.9.8 - На всех тесты валились с разными ошибками, за исключением - 1.9.8 - на которой все работает хорошо, на ней и остался.
Тут как бы такой момент, что я новичок в этом. Я себе поставил задачу, избавится от того чтобы тесты запускались в firefox. Как сделать так, чтобы firefox работал в фоне, вменяемого рабочего решения я пока не нашел. Поэтому для меня phantomjs показался очень даже не плохим вариантом.
Если я правильно понял, то так походу делать нельзя… Хорошо когда браузер запускается и открывается и в нем происходят какие-то действия. Вроде как сам пользователь все это проделывает. Хорошо когда есть такой сервер, на котором все это воспроизводиться.
Но есть ситуации, когда нет подобного сервера, есть только vps без графической среды? удаленно где-то там… На таком сервере можно использовать phantomjs
Но есть ситуации, когда нет подобного сервера, есть только vps без графической среды? удаленно где-то там… На таком сервере можно использовать phantomjs
Но, слишком как-то все усложнено: запуск эмулятора иксов в фоне + еще может быть многопоточность и дургие всякие штуки на сервере, которые жрут ресурс… Ради опыта конечно постараюсь реализовать, но phantomjs, походу именно для этого и был придуман…
Использую Xvfb для запуска Firefox, работает все хорошо, задания засылаю через SeleniumGrid2, проблемы только что с выгрузкой файлов к удаленно запущенному тесту.