Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Не работают селениум тесты через Jenkins

jenkins
cucumber
selenium
Теги: #<Tag:0x00007f7b6d124180> #<Tag:0x00007f7b6d126d68> #<Tag:0x00007f7b658c7d90>

#1

ЗДравствуйте,
Я поднял у себя на локалхосте дженкинс и пытаюсь запустить тесты с помощью хром драйвера.

Тесты 100% правильные и без проблем работают на прямую с ИДЕ.
Запускаю тесты с включенным ВПН.
После запуска через дженкинс веб драйвер вообще не видит локаторов:
Вот стактрейс который повторяется для каждого теста.

arting ChromeDriver 2.29.461585 (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b) on port 3006
12:07:39 Only local connections are allowed.
12:07:41 May 29, 2017 12:07:41 PM org.openqa.selenium.remote.ProtocolHandshake createSession
12:07:41 INFO: Detected dialect: OSS
12:07:45 2017-05-29 12:07:45.122 chromedriver[69943:55661383] CFPasteboardRef CFPasteboardCreate(CFAllocatorRef, CFStringRef) : failed to create global data
12:07:45 2017-05-29 12:07:45.125 chromedriver[69943:55661383] CFPasteboardRef CFPasteboardCreate(CFAllocatorRef, CFStringRef) : failed to create global data
12:07:45 2017-05-29 12:07:45.127 chromedriver[69943:55661383] CFPasteboardRef CFPasteboardCreate(CFAllocatorRef, CFStringRef) : failed to create global data
12:07:45 2017-05-29 12:07:45.132 chromedriver[69943:55661383] CFPasteboardRef CFPasteboardCreate(CFAllocatorRef, CFStringRef) : failed to create global data
12:08:10 
12:08:10   Scenario Outline: In this scenario we are creating CAFs                                         e[90m# creacteCafTest.feature:32e[0m
12:08:10     e[32mGiven e[0me[32muser is on e[0me[32me[1mhttps://ams2-test.adidas-group.com/LCMe[0m                                       e[90m# StepDefinitions.userIsOnHttpsAmsTestAdidasGroupComLCM(String)e[0m
12:08:10     e[31mWhen e[0me[31muser clicks on the 'Contracts parties’ tabe[0m                                               e[90m# CreateCAFStepsTest.userClicksOnTheContractsTab()e[0m
12:08:10       e[31morg.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//a[@href='contacts.do?x=y']"}
12:08:10         (Session info: chrome=58.0.3029.110)
12:08:10         (Driver info: chromedriver=2.29.461585 (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b),platform=Mac OS X 10.11.6 x86_64) (WARNING: The server did not provide any stacktrace information)
12:08:10       Command duration or timeout: 25.04 seconds
12:08:10       For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
12:08:10       Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
12:08:10       System info: host: 'MBPR-096local.local', ip: '192.168.1.155', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.6', java.version: '1.8.0_121'
12:08:10       Driver info: org.openqa.selenium.chrome.ChromeDriver
12:08:10       Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.29.461585 (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b), userDataDir=/var/folders/8f/f9frbsh52317vc33yhptmp4r00007x/T/.org.chromium.Chromium.y4zn01}, takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false, version=58.0.3029.110, platform=MAC, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true, unexpectedAlertBehaviour=}]
12:08:10       Session ID: e83f12c2ffe2de38bce567811feab82f
12:08:10       *** Element info: {Using=xpath, value=//a[@href='contacts.do?x=y']}
12:08:10       	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
12:08:10       	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
12:08:10       	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
12:08:10       	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
12:08:10       	at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:215)
12:08:10       	at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:167)
12:08:10       	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:671)
12:08:10       	at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:410)
12:08:10       	at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:509)
12:08:10       	at org.openqa.selenium.By$ByXPath.findElement(By.java:361)
12:08:10       	at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:402)
12:08:10       	at HeaderMenu.clickOnCP(HeaderMenu.java:21)
12:08:10       	at CreateCAFStepsTest.userClicksOnTheContractsTab(CreateCAFStepsTest.java:35)
12:08:10       	at ✽.When user clicks on the 'Contracts parties’ tab(creacteCafTest.feature:6)

(Oleksii Ihnatiuk) #2

То что он не видит локаторы может быть не причиной а следствием. Может быть ошибка на моменте передачи урла для входа на сайт.


#3

Скорей всего при передаче ЮРЛ но визуально теста я не вижу (хоть и хостится всё на моей машине), да и если из под Мавена всё запускать то всё работает ок.


#4

Вот код захода на сайт

 @Before
    public static void start() {
        System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")+ System.getProperty("file.separator")+"chromedriver");
        DesiredCapabilities capabilities = DesiredCapabilities.chrome();
        capabilities.setCapability("chrome.switches", Arrays.asList("--ignore-certificate-errors"));
        driver = new ChromeDriver(capabilities);
        driver.manage().timeouts().implicitlyWait(25, TimeUnit.SECONDS);
   @Given("^user is on (https?:\\/\\/[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|])")
    public void userIsOnHttpsAmsTestAdidasGroupComLCM(String url) throws Throwable {
        driver.get(url);
        MyLCM loginLCM = new MyLCM(driver);
        loginLCM.logIn("login","pass");
    }

#5

Может подскажете, должен ли я видеть браузер если запускаю тесты из под дженкинса?


(Sergey Ivanskoy) #6

Смотря какой способ запуска вы используете для агента


(Vladyslav Lopatynskyi) #7

Вы можете видеть тесты.
Для linux, необходимо переключиться на xvfb дисплей на котором запустились тесты.
Для windows, по крайней мере на 7ой ее версии, можно было переключиться в виртуальный дисплей запущенный дженкинс сервисом. Конкретной процедуры, к сожалению, уже не помню, но это возможно.

Второй ответ должен помочь.

В комментах пишут, что на 10ке тоже работает


#8

А если у меня Мак?


(Vladyslav Lopatynskyi) #9

Так же как и на линуксе.
Или повесить видео рекордер и смотреть после запуска.
Или повесить скриншоты до и после выполнения любого действия


#10

Не могу повесить Скриншоты, оптяь же на локалке всё работает хорошо а на дженкинсе вот ткая ошибка выпадает

12:22:57 May 30, 2017 12:22:57 PM org.apache.http.impl.execchain.RetryExec execute
12:22:57 INFO: I/O exception (org.apache.http.NoHttpResponseException) caught when processing request to {}->http://localhost:36350: The target server failed to respond
12:22:57 May 30, 2017 12:22:57 PM org.apache.http.impl.execchain.RetryExec execute
12:22:57 INFO: Retrying request to {}->http://localhost:36350

#11

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

driver.manage().window().setSize(new Dimension(1024, 768));