Víte, jak si nemůžete vzpomenout na něco, co váš manžel považuje za opravdu důležité, ale vy si pamatujete každou vtipnou větu z filmu, který jste viděli, když vám bylo 17? Tak se cítím po měsících psaní testů selenu pomocí Intern frameworku – zapomněl jsem spoustu důležitých věcí na front-endu, ale odhalil jsem spoustu problémů se selenem a technik, jak je obejít.
Nejprve jsem své testy psal pomocí Firefoxu jako testovacího prohlížeče. Poté jsem otevřel své testování v prohlížeči Chrome a potřeboval jsem upravit spoustu věcí, protože Chrome spolehlivě nedělá věci jako Firefox, jako je prvek „kliknutí“ vs. stisknutí klávesy „enter“. A neptejte se mě na problémy se souběžností. Dnes mě napadlo přidat do mixu Safari. Jedním slovem....f*ck. Objevil se zcela nový svět problémů.
Jeden problém, který má Selenium + Safari (jeden z desítek), jsou problémy s historií / URL. Po spoustě výzkumu a implementaci každého hacku, který mě napadl, jsem měl tento okamžik:
Pokud se v daném prohlížeči vyskytne problém se selenem, který znemožňuje správné dokončení testu, nemá smysl s ním bojovat – tento případ vyžaduje pouhé úspěšné absolvování testu místo otravování, když vidíte selhání kvůli chybě Selenium . Jak ale získáte informace o prohlížeči v rámci testu?
// From within a test function console.log(this.remote.session.capabilities); { 'webdriver.remote.sessionid': 'f4dffffc-8d40-4e21-a862-459109ffabfc', browserName: 'safari', takesScreenshot: true, javascriptEnabled: true, version: '8.0.8', cssSelectorsEnabled: true, platform: 'MAC', secureSsl: true, remoteFiles: true, nativeEvents: false, rotatable: false, locationContextEnabled: false, webStorageEnabled: false, applicationCacheEnabled: false, supportsNavigationDataUris: true, supportsCssTransforms: true, supportsExecuteAsync: true, mouseEnabled: true, touchEnabled: false, dynamicViewport: true, shortcutKey: '', brokenDeleteCookie: false, brokenExecuteElementReturn: false, brokenExecuteUndefinedReturn: false, brokenElementDisplayedOpacity: false, brokenElementDisplayedOffscreen: false, brokenSubmitElement: true, brokenWindowSwitch: true, brokenDoubleClick: false, brokenCssTransformedSize: true, fixedLogTypes: false, brokenHtmlTagName: false, brokenNullGetSpecAttribute: false, brokenNavigation: true, brokenMouseEvents: true, brokenWindowPosition: true, brokenSendKeys: true, brokenCookies: true }
Objekt relace na dálkovém ovládání poskytuje informace o relaci prohlížeče, včetně názvu (nejdůležitějšího) a také oprav poskytnutých Intern.
V ideálním světě můžete všechny své testy Selenium psát v jednom formátu a funguje to v každém prohlížeči....ale nežijeme v ideálním světě, stejně jako potřebujeme hacky prohlížeče v JavaScriptu na straně klienta. Možnost získat název prohlížeče a další informace v rámci testu je však jen další super užitečná informace, kterou Intern odhalil!