IE11 - Error: no value passed to Element constructor
приветствую, столкнулся с проблемой при попытке снять скриншоты в 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)
неужели никто не сталкивался ? :) обидно работать без этого динозавра, там частенько вёрстка плывёт
Привет.
У тебя все тесты в IE11 с такой ошибкой падают? Можешь какой то minimal case написать, чтобы я у себя мог подебажить?
@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);
})
} );
скриншот стека :

Мне нужен сайт на который я могу сходить из теста, например тот который ты тестируешь. Если ты сайт у тебя работает только локально на твоем компе, тогда пришли небольшой тест написанный для какого то популярного сайта. Например для github.com. Главное чтобы у тебя эта проблема воспроизвелась на нем.
@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 ); - всё работает как часы
@DudaGod попутно хочу задать вопрос по Edge ( 16.16299 ) браузеру - столкнулся с его ужасной работой при compositeImage: true - прикладываю пример - на нём заметно как криво склеивается страница ( элементы задваиваются ) при наличии вертикального скролла к ней. проблема самого браузера и его драйвера или всё же gemini ?

Есть не нулевая вероятность, что дело в верстке. Такое бывает когда на странице есть скрол и фиксированные элементы (допустим что-то всегда центруется или лепится к низу): gemini отскринил, посмотрел, что блок не влез на 200 px, проскроллил ниже, блок переехал ниже, gemini отскринил, вырезал эти 200 px, и доклеил к оригинальному изображению.
@j0tunn приветствую. проблему с Edge решил новой опцией из версии 5.3.0 - screenshotDelay - с небольшой задержкой склеивание происходит должным образом. а вот по поводу проблемы с IE11 и actions.waitForElementToShow( ".b-table.layout__table", 5000 ); - похоже что проблема на уровне gemini ?
с IE11 я сегодня подебажу, как освобожусь
Прости, завал на работе был, не успел подебажить.
Я попробовал сейчас запустить твой тест используя твой конфиг и такую же версию gemini. И у меня данная проблема не воспроизводится, все тесты проходят без проблем.
Ты уверен, что у тебя последний предоставленный тобой тест не проходит только в IE? Судя по ошибке он у тебя почему то не может на странице найти элемент .b-table.layout__table.
@DudaGod привет, проблемы были исключительно в IE11. на данный момент временно отложил gemini в сторону из за занятости, но спасибо что посмотрел данный момент !
Апну тему, у меня такая же проблема в IE11 в "gemini": "5.7.2".
При попытке ожидать элемент, тесты падают с исключением.
throw new Error("no value passed to Element constructor");
^
Error: no value passed to Element constructor