gemini icon indicating copy to clipboard operation
gemini copied to clipboard

IE11 - Error: no value passed to Element constructor

Open StasGrishaev opened this issue 8 years ago • 12 comments

приветствую, столкнулся с проблемой при попытке снять скриншоты в IE11 - стек прилагается. что пробовал :

  • переустанавливать webdriver-manager из npm
  • использовать 64 или 32 битные версии IEdriverServer
  • пробовал standalone selenium server

на этом попытки закончились. версия IE11 - 11.0.49 ( protected mode для всех зон безопасности включен ) версия IE драйвера - 3.8.0 версия selenium server - 3.8.1

ничего интересного в гугле или у вас на гитхабе не нашёл к сожалению. сможете что то подсказать ?

на всякий случай стек SeleniumServer

02:02:04.012 INFO - Capabilities are: Capabilities {browserName: internet explorer, javascriptEnabled: true, version: 11}
02:02:04.012 INFO - Capabilities {browserName: internet explorer, javascriptEnabled: true, version: 11} matched class org.openqa.selenium.remote.server.ServicedSession$Factory (provider: org.openqa.selenium.ie.InternetExplorerDriverService)
Started InternetExplorerDriver server (32-bit)
3.8.0.0
Listening on port 40726
Only local connections are allowed
02:02:08.672 INFO - Detected dialect: W3C
02:02:08.706 INFO - Found handler: org.openqa.selenium.remote.server.ServicedSession@c45e3f
02:02:08.707 INFO - Handler thread for session b0d3f8c3-4214-47d2-8967-925c756c03f9 (internet explorer): Executing POST on /session/b0d3f8c3-4214-47d2-8967-925c756c03f9/window/current/size (handler: ServicedSession)
02:02:09.022 INFO - Found handler: org.openqa.selenium.remote.server.ServicedSession@c45e3f
02:02:09.023 INFO - Handler thread for session b0d3f8c3-4214-47d2-8967-925c756c03f9 (internet explorer): Executing POST on /session/b0d3f8c3-4214-47d2-8967-925c756c03f9/execute (handler: ServicedSession)
02:02:09.075 INFO - Found handler: org.openqa.selenium.remote.server.ServicedSession@c45e3f
02:02:09.076 INFO - Handler thread for session b0d3f8c3-4214-47d2-8967-925c756c03f9 (internet explorer): Executing POST on /session/b0d3f8c3-4214-47d2-8967-925c756c03f9/moveto (handler: ServicedSession)
02:02:09.095 INFO - Found handler: org.openqa.selenium.remote.server.ServicedSession@c45e3f
02:02:09.096 INFO - Handler thread for session b0d3f8c3-4214-47d2-8967-925c756c03f9 (internet explorer): Executing POST on /session/b0d3f8c3-4214-47d2-8967-925c756c03f9/url (handler: ServicedSession)
02:02:09.362 INFO - Found handler: org.openqa.selenium.remote.server.ServicedSession@c45e3f
02:02:09.362 INFO - Handler thread for session b0d3f8c3-4214-47d2-8967-925c756c03f9 (internet explorer): Executing POST on /session/b0d3f8c3-4214-47d2-8967-925c756c03f9/execute (handler: ServicedSession)
02:02:09.406 INFO - Found handler: org.openqa.selenium.remote.server.ServicedSession@c45e3f
02:02:09.407 INFO - Handler thread for session b0d3f8c3-4214-47d2-8967-925c756c03f9 (internet explorer): Executing POST on /session/b0d3f8c3-4214-47d2-8967-925c756c03f9/execute (handler: ServicedSession)
02:02:09.629 INFO - Found handler: org.openqa.selenium.remote.server.ServicedSession@c45e3f
02:02:09.630 INFO - Handler thread for session b0d3f8c3-4214-47d2-8967-925c756c03f9 (internet explorer): Executing POST on /session/b0d3f8c3-4214-47d2-8967-925c756c03f9/execute (handler: ServicedSession)
02:02:09.761 INFO - Found handler: org.openqa.selenium.remote.server.ServicedSession@c45e3f
02:02:09.762 INFO - Handler thread for session b0d3f8c3-4214-47d2-8967-925c756c03f9 (internet explorer): Executing POST on /session/b0d3f8c3-4214-47d2-8967-925c756c03f9/elements (handler: ServicedSession)

Output of gemini --version:

5.0.0-alpha.10

Contents of .gemini.js file:

module.exports = {
    rootUrl: 'http://localhost:9000',
    gridUrl: 'http://127.0.0.1:4444/wd/hub',
    compositeImage: true,
    sessionsPerBrowser: 1,
    calibrate: false,

    browsers: {
        // chrome: {
        //     screenshotsDir: './screens/chrome',
        //     windowSize: '1920x1080',
        //     desiredCapabilities: {
        //         browserName: 'chrome'
        //     }
        // },
        // firefox:{
        //     windowSize: '1920x1080',
        //     screenshotsDir: './screens/ff',
        //     desiredCapabilities:{
        //         browserName: 'firefox',
        //         marionette: false
        //     }
        // },
        // edge:{
        // 	windowSize: '1920x1080',
        //     screenshotsDir: './screens/edge',
        //     desiredCapabilities:{
        //         browserName: 'MicrosoftEdge'
        //     }
        // },
        ie:{
            windowSize: '1920x1080',
            screenshotsDir: './gemini/ie-screens',
            desiredCapabilities:{
                browserName: 'internet explorer',
                version: '11'
            }
        }
    },

    sets:{
    	chrome:{
    		files:"C:/Users/User/Documents/project/__test__/css_regression/tests"
    	},
    	// firefox:{
    	// 	files:"C:/Users/User/Documents/project/__test__/css_regression"
    	// },
    }
};

Test source code:

gemini.suite( "overview", function( suite ) {

	/**
	 *  Suite: Check of Login page
	 */
	suite.setUrl( "/#/members/11095" )
	     .before( function( actions ) {
		     actions.waitForElementToShow( ".ldv-header", 45000 );
		     actions.wait(5000);
	     } )
	     .setCaptureElements( [
		     ".memberView"
	     ] )
	     .ignoreElements('.ldv-content-section', {every: '.ldv-service-number-tooltip.ng-scope'})
	     .capture("plain");
} );

Command used to run the test:

gemini-gui

Result:

Critical error:
Error: no value passed to Element constructor
    at PromiseElement.Element (C:\Users\User\Documents\mentrics\ODHWeb\FrontEndApp\node_modules\wd\lib\element.js:15:11)
    at new PromiseElement (C:\Users\User\Documents\mentrics\ODHWeb\FrontEndApp\node_modules\wd\lib\promise-webdriver.js:73:20)
    at PromiseWebdriver.newElement (C:\Users\User\Documents\mentrics\ODHWeb\FrontEndApp\node_modules\wd\lib\promise-webdriver.js:103:12)
    at C:\Users\User\Documents\mentrics\ODHWeb\FrontEndApp\node_modules\wd\lib\callbacks.js:137:24
    at C:\Users\User\Documents\mentrics\ODHWeb\FrontEndApp\node_modules\wd\lib\callbacks.js:82:7
    at C:\Users\User\Documents\mentrics\ODHWeb\FrontEndApp\node_modules\wd\lib\webdriver.js:174:5
    at Request._callback (C:\Users\User\Documents\mentrics\ODHWeb\FrontEndApp\node_modules\wd\lib\http-utils.js:87:7)
    at Request.self.callback (C:\Users\User\Documents\mentrics\ODHWeb\FrontEndApp\node_modules\wd\node_modules\request\request.js:368:22)
    at Request.emit (events.js:159:13)
    at Request.<anonymous> (C:\Users\User\Documents\mentrics\ODHWeb\FrontEndApp\node_modules\wd\node_modules\request\request.js:1219:14)
    at Request.emit (events.js:164:20)
    at IncomingMessage.<anonymous> (C:\Users\User\Documents\mentrics\ODHWeb\FrontEndApp\node_modules\wd\node_modules\request\request.js:1167:12)
    at IncomingMessage.emit (events.js:164:20)
    at endReadableNT (_stream_readable.js:1062:12)
    at process._tickCallback (internal/process/next_tick.js:152:19)

StasGrishaev avatar Dec 22 '17 10:12 StasGrishaev

неужели никто не сталкивался ? :) обидно работать без этого динозавра, там частенько вёрстка плывёт

StasGrishaev avatar Jan 26 '18 15:01 StasGrishaev

Привет.

У тебя все тесты в IE11 с такой ошибкой падают? Можешь какой то minimal case написать, чтобы я у себя мог подебажить?

DudaGod avatar Jan 30 '18 14:01 DudaGod

@DudaGod привет ! да, вообще все. интересует именно код сьюта ? если да, то вот пример :

gemini.suite( "CatalogOfQuizzes page", function( suite ) {
	suite.setUrl( "/CatalogOfQuizzes" )
	     .before( function( actions ) {
		     actions.wait( 2000 );
	     } )
	     .setCaptureElements( [
		     ".Layout",
	     ] )
	     .capture('1080', function(actions) {
      		actions.setWindowSize(1920, 1080);
    	 })
    	 .capture('mobile', function(actions) {
      		actions.setWindowSize(375, 667);
    	 })
	     .capture('1024', function(actions) {
      		actions.setWindowSize(1280, 1024);
    	 }) 
} );

скриншот стека : image

StasGrishaev avatar Jan 30 '18 14:01 StasGrishaev

Мне нужен сайт на который я могу сходить из теста, например тот который ты тестируешь. Если ты сайт у тебя работает только локально на твоем компе, тогда пришли небольшой тест написанный для какого то популярного сайта. Например для github.com. Главное чтобы у тебя эта проблема воспроизвелась на нем.

DudaGod avatar Jan 30 '18 14:01 DudaGod

@DudaGod провозился около часа с разными стендами и наконец то локализовал проблему. дело в ожидании появлении элемента в before блоке. прикладываю код для воспроизведения :

.gemini.js:

module.exports = {
    rootUrl: 'http://ya.ru',
    gridUrl: 'http://127.0.0.1:4444/wd/hub',
    compositeImage: true,
    sessionsPerBrowser: 1,
    calibrate: false,

    browsers: {
        // chrome: {
        //     screenshotsDir: './screens/chrome',
        //     windowSize: '1920x1080',
        //     desiredCapabilities: {
        //         browserName: 'chrome'
        //     }
        // },
        // firefox:{
        //     windowSize: '1920x1080',
        //     screenshotsDir: './screens/ff',
        //     desiredCapabilities:{
        //         browserName: 'firefox',
        //         marionette: false
        //     }
        // },
        // edge:{
        // 	windowSize: '1920x1080',
        //     screenshotsDir: './screens/edge',
        //     desiredCapabilities:{
        //         browserName: 'MicrosoftEdge'
        //     }
        // },
        ie:{
            windowSize: '1920x1080',
            screenshotsDir: './screens/ie11',
            desiredCapabilities:{
                browserName: 'internet explorer',
                version: '11'
            }
        }
    },

    sets:{
    	chrome:{
    		files:"C:/Users/User/Documents/project/tests"
    	},
    	// firefox:{
    	// 	files:"C:/Users/User/Documents/project/__test__/css_regression"
    	// },
    }
};

suite:

gemini.suite( "Landing page", function( suite ) {
	suite.setUrl( "/" )
		 // .skip('edge')
	     .before( function( actions ) {
		     actions.waitForElementToShow( ".b-table.layout__table", 5000 );
	     } )
	     .setCaptureElements( [
		     ".b-table.layout__table",
	     ] )
	     .capture('1080', function(actions) {
      		actions.setWindowSize(1920, 1080);
    	 })
	     .capture('1024', function(actions) {
      		actions.setWindowSize(1280, 1024);
    	 })
    	 .capture('mobile', function(actions) {
      		actions.setWindowSize(375, 667);
    	 })
} );

в случае если меняем actions.waitForElementToShow( ".b-table.layout__table", 5000 ); на actions.wait( 2000 ); - всё работает как часы

StasGrishaev avatar Jan 30 '18 15:01 StasGrishaev

@DudaGod попутно хочу задать вопрос по Edge ( 16.16299 ) браузеру - столкнулся с его ужасной работой при compositeImage: true - прикладываю пример - на нём заметно как криво склеивается страница ( элементы задваиваются ) при наличии вертикального скролла к ней. проблема самого браузера и его драйвера или всё же gemini ?

image

StasGrishaev avatar Jan 30 '18 17:01 StasGrishaev

Есть не нулевая вероятность, что дело в верстке. Такое бывает когда на странице есть скрол и фиксированные элементы (допустим что-то всегда центруется или лепится к низу): gemini отскринил, посмотрел, что блок не влез на 200 px, проскроллил ниже, блок переехал ниже, gemini отскринил, вырезал эти 200 px, и доклеил к оригинальному изображению.

j0tunn avatar Jan 31 '18 05:01 j0tunn

@j0tunn приветствую. проблему с Edge решил новой опцией из версии 5.3.0 - screenshotDelay - с небольшой задержкой склеивание происходит должным образом. а вот по поводу проблемы с IE11 и actions.waitForElementToShow( ".b-table.layout__table", 5000 ); - похоже что проблема на уровне gemini ?

StasGrishaev avatar Jan 31 '18 09:01 StasGrishaev

с IE11 я сегодня подебажу, как освобожусь

DudaGod avatar Jan 31 '18 10:01 DudaGod

Прости, завал на работе был, не успел подебажить.

Я попробовал сейчас запустить твой тест используя твой конфиг и такую же версию gemini. И у меня данная проблема не воспроизводится, все тесты проходят без проблем. Ты уверен, что у тебя последний предоставленный тобой тест не проходит только в IE? Судя по ошибке он у тебя почему то не может на странице найти элемент .b-table.layout__table.

DudaGod avatar Feb 15 '18 08:02 DudaGod

@DudaGod привет, проблемы были исключительно в IE11. на данный момент временно отложил gemini в сторону из за занятости, но спасибо что посмотрел данный момент !

StasGrishaev avatar Feb 15 '18 09:02 StasGrishaev

Апну тему, у меня такая же проблема в IE11 в "gemini": "5.7.2". При попытке ожидать элемент, тесты падают с исключением.

 throw new Error("no value passed to Element constructor");
    ^

Error: no value passed to Element constructor

qwerty2323 avatar Oct 12 '18 09:10 qwerty2323