t.me/atinfo_chat Telegram группа по автоматизации тестирования

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

Теги: #<Tag:0x00007f748234c170> #<Tag:0x00007f748234c0a8> #<Tag:0x00007f7482353fb0>

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

Тесты 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)

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

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

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

 @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");
    }

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

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

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

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

В комментах пишут, что на 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

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

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