{"id":2823,"date":"2016-06-15T23:36:05","date_gmt":"2016-06-15T21:36:05","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=2823"},"modified":"2025-05-07T13:06:27","modified_gmt":"2025-05-07T11:06:27","slug":"nie-taki-diabel-straszny-jak-go-maluja","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/nie-taki-diabel-straszny-jak-go-maluja\/","title":{"rendered":"Nie taki diabe\u0142 straszny, jak go maluj\u0105 \u2013 czyli testy aplikacji mobilnych"},"content":{"rendered":"\n<p>Wraz z post\u0119pem technologii zmienia si\u0119 model korzystania z Internetu, dost\u0119pu do rozrywki czy wykorzystywania informacji. Kiedy\u015b \u017ar\u00f3d\u0142em wiedzy by\u0142y ksi\u0105\u017cki, potem gazety dzi\u015b za\u015b nowe technologie. Komputer przesta\u0142 przodowa\u0107 w zakresie szeroko poj\u0119tej nowoczesno\u015bci \u2013 obecnie prym wiod\u0105 urz\u0105dzenia mobilne stanowi\u0105ce dla Nas okno na \u015bwiat. Poniewa\u017c aplikacji na rynku jest wiele i konkurencja nie \u015bpi, nale\u017cy wi\u0119c zadba\u0107 o jako\u015b\u0107 rozwijanych produkt\u00f3w i przyjrze\u0107 si\u0119 lepiej zasadom <a href=\"http:\/\/sii.pl\/offer-page\/testing\/\">testowania aplikacji<\/a>. Dzisiaj pochylimy si\u0119 nad stworzeniem testu funkcjonalnego przyk\u0142adowej aplikacji mobilnej na platform\u0119 iOS z wykorzystaniem SeeTest Automation. Opis oraz zalety tego narz\u0119dzia przedstawi\u0142am we wcze\u015bniejszym wpisie, do \u00a0zapoznania z kt\u00f3rym serdecznie zapraszam.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wst\u0119p<\/h2>\n\n\n\n<p>Aby rozpocz\u0105\u0107 prac\u0119 z SeeTest Automation nale\u017cy zainstalowa\u0107 tak\u017ce dodatkowe \u015brodowisko w zale\u017cno\u015bci od tego, w jakim j\u0119zyku chcemy pisa\u0107 testy. Mo\u017ce by\u0107 to Eclipse, Visual Studio, IntelliJ, JetBrains, HP QTP itd. Opr\u00f3cz tego nale\u017cy posiada\u0107 pod\u0142\u0105czone urz\u0105dzenie do komputera. Oczywi\u015bcie mo\u017cna tak\u017ce korzysta\u0107 z emulatora, ale na potrzeby niniejszego artyku\u0142u skorzystamy z realnego urz\u0105dzenia pod\u0142\u0105czonego przez kabel USB. Poniewa\u017c test tworzony b\u0119dzie na platform\u0119 iOS, tak wi\u0119c dodatkowo posiadam zainstalowany iTunes, aby by\u0142o mo\u017cliwe pod\u0142\u0105czenie urz\u0105dzenia od Apple\u2019a. Przy pierwszym pod\u0142\u0105czeniu iPhone\u2019a lub iPada do komputera i pr\u00f3bie otworzenia widoku ekranu telefonu, na urz\u0105dzeniu zostanie zainstalowana aplikacja dodatkowa, tzw. Bridge. Umo\u017cliwi to przesy\u0142anie komend z Clienta do urz\u0105dzenia. Dodatkowo przed przyst\u0105pieniem prac nale\u017cy wys\u0142a\u0107 do firmy Experitest pro\u015bb\u0119 o stworzenie pliku administracyjnego. Jest to tzw. provisioning profile dla Clienta, aby m\u00f3g\u0142 on wykorzystywa\u0107 pe\u0142n\u0105 kontrol\u0119 nad telefonem. Szczeg\u00f3\u0142y dotycz\u0105ce tego kroku znajduj\u0105 si\u0119 w sekcji <em>\u201eConnecting an iOS Device\u201d<\/em> na&nbsp;<a href=\"https:\/\/docs.experitest.com\/display\/public\/SA\/Connecting+An+iOS+Device\" rel=\"nofollow\" >stronie dokumentacji<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Praca z Clientem<\/h2>\n\n\n\n<p>Kiedy wszystkie niezb\u0119dne programy s\u0105 ju\u017c zainstalowane oraz gdy poprawnie skonfigurowali\u015bmy urz\u0105dzenie, mo\u017cemy teraz przej\u015b\u0107 do samego SeeTesta. W sekcji <em>\u201eApplication\u201d<\/em> nale\u017cy zaimportowa\u0107 builda aplikacji. Dla iOS b\u0119dzie to plik z rozszerzeniem .ipa, dla Androida b\u0119dzie to .apk za\u015b dla Windows Phone\u2019a .xap lub .appx . Podczas importu SeeTest sam zapyta czy chcemy od razu zainstalowa\u0107 aplikacj\u0119 na wybranym urz\u0105dzeniu oraz czy j\u0105 uruchomi\u0107. Aplikacja mo\u017ce zosta\u0107 uruchomiona w dw\u00f3ch trybach: <em>instrumented<\/em> oraz <em>non-instrumented<\/em>. Tryby te r\u00f3\u017cni\u0105 si\u0119 atrybutami, kt\u00f3re jeste\u015bmy w stanie zaczyta\u0107 z kontrolek przy pomocy object spy. Podczas pracy z Clientem aplikacja uruchamiana jest zawsze w trybie instrumented, ale mo\u017cna to zmieni\u0107 r\u0119cznie lub w kodzie.<\/p>\n\n\n\n<p>Aby otworzy\u0107 okienko z zrzutem ekranu urz\u0105dzenia nale\u017cy w panelu <em>Device<\/em> dwukrotnie klikn\u0105\u0107 na nazw\u0119 urz\u0105dzenia lub na ikonk\u0119 telefonu z \u017c\u00f3\u0142tym znaczkiem.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/ikonkiSeeTest.png\"><img decoding=\"async\" width=\"665\" height=\"387\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/ikonkiSeeTest.png\" alt=\"Device and Application Management\" class=\"wp-image-2824\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/ikonkiSeeTest.png 665w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/ikonkiSeeTest-300x175.png 300w\" sizes=\"(max-width: 665px) 100vw, 665px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 1 Device and Application Management<\/figcaption><\/figure>\n\n\n\n<p>Kiedy uruchomili\u015bmy ju\u017c aplikacj\u0119 na urz\u0105dzeniu i mamy otwarty widok pulpitu telefonu mo\u017cemy przej\u015b\u0107 do nagrywania testu i analizy wygenerowanego kodu.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Projekt w SeeTest<\/h2>\n\n\n\n<p>W\u0142a\u015bciwy, miarodajny test, z kt\u00f3rego p\u0142ynie wiele korzy\u015bci uzyskamy w\u00f3wczas, gdy rozpoczniemy prace nad nim od nagrania kilku step\u00f3w w Cliencie a nast\u0119pnie wygenerowany kod przeniesiemy do dowolnego innego narz\u0119dzia i w nim rozpoczniemy prace modernizacyjne.<\/p>\n\n\n\n<p>Na potrzeby niniejszego artyku\u0142u skorzysta\u0142am z gotowej, dostarczanej razem z SeeTest\u2019em aplikacji na iOS \u2013 EriBank. Scenariusz testu jest prosty \u2013 wpisuj\u0105c niepoprawne dane 3 razy chc\u0119 sprawdzi\u0107, czy aplikacja mnie nie zaloguje oraz wpisuj\u0105c poprawne dane chc\u0119 sprawdzi\u0107 czy uda mi si\u0119 zalogowa\u0107. Wszystkie czynno\u015bci wykonane w aplikacji nagrywam aby zidentyfikowa\u0107 jak najwi\u0119cej obiekt\u00f3w, przydatnych do weryfikacji poprawno\u015bci wykonanych operacji. Wybranym przeze mnie j\u0119zykiem, w kt\u00f3rym chc\u0119 aby zosta\u0142 wygenerowany kod jest Java po\u0142\u0105czona z TestNG.<\/p>\n\n\n\n<p>Aby rozpocz\u0105\u0107 nagrywanie testu nale\u017cy nacisn\u0105\u0107 czerwony przycisk <em>Record<\/em>, poczeka\u0107 a\u017c Client zainicjuje wszystkie potrzebne mechanizmy,&nbsp; a nast\u0119pnie zacz\u0105\u0107 klika\u0107 w aplikacji, aby nagra\u0142y si\u0119 wszystkie wykonane akcje. Po zako\u0144czeniu wszystkich krok\u00f3w nale\u017cy klikn\u0105\u0107 w niebieski kwadrat aby zapisa\u0107 nagrane stepy oraz wygenerowa\u0107 kod. W pasku wyboru w <em>Code Area<\/em> mamy mo\u017cliwo\u015b\u0107 zdefiniowania j\u0119zyka programowania, w kt\u00f3rym chcemy otrzyma\u0107 poszczeg\u00f3lne kroki. Mo\u017cemy je dowolnie modyfikowa\u0107 w <em>Command Area<\/em> a zmiany dynamicznie uka\u017c\u0105 si\u0119 w kodzie poni\u017cej. Obiekty \u00ad\u2013 ikony \u2013 w kt\u00f3re klikali\u015bmy, zostan\u0105 automatycznie dodane do defaultowego repozytorium. Mo\u017cemy je dowolnie modyfikowa\u0107 \u2013 zmienia\u0107 nazwy, parametry po kt\u00f3rych chcemy je rozpoznawa\u0107.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/ikonkiSeeTest2.png\"><img decoding=\"async\" width=\"458\" height=\"346\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/ikonkiSeeTest2.png\" alt=\"Command Area and Code Area\" class=\"wp-image-2825\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/ikonkiSeeTest2.png 458w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/ikonkiSeeTest2-300x227.png 300w\" sizes=\"(max-width: 458px) 100vw, 458px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 2 Command Area and Code Area<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/ikonkiSeeTest3.png\"><img decoding=\"async\" width=\"347\" height=\"278\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/ikonkiSeeTest3.png\" alt=\"Repozytorium obiekt\u00f3w\" class=\"wp-image-2826\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/ikonkiSeeTest3.png 347w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/ikonkiSeeTest3-300x240.png 300w\" sizes=\"(max-width: 347px) 100vw, 347px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 3 Repozytorium obiekt\u00f3w<\/figcaption><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Rozpoznawanie obiekt\u00f3w<\/li>\n<\/ul>\n\n\n\n<p>SeeTest umo\u017cliwia rozpoznawanie obiekt\u00f3w na 4 sposoby: <strong>Native<\/strong>, czyli po atrybutach natywnych (name, accessibilityLabel, xpath, id itd.); <strong>Web<\/strong>, czyli po atrybutach typowo webowych dla webowych aplikacji (xpath, class, css itd.); <strong>Image<\/strong> \u2013 por\u00f3wnywanie na podstawie bitmapy oraz <strong>Text<\/strong> \u2013 rozpoznawanie opiera si\u0119 na algorytmie <strong><em>OCR<\/em> <\/strong>(<em>Optical Character Recognition<\/em>), kt\u00f3ry wybiera tekst z obrazka. Wi\u0119cej informacji&nbsp;<a href=\"https:\/\/docs.experitest.com\/display\/public\/SA\/Edit+Object+Properties\" rel=\"nofollow\" >tutaj.<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/objects.png\"><img decoding=\"async\" width=\"1024\" height=\"233\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/objects-1024x233.png\" alt=\"Edycja obiektu - mo\u017cliwe sposoby rozpoznawania\" class=\"wp-image-2827\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/objects-1024x233.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/objects-300x68.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/objects.png 1752w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 4 Edycja obiektu &#8211; mo\u017cliwe sposoby rozpoznawania<\/figcaption><\/figure>\n\n\n\n<p>Kiedy mamy nagrany test oraz wybrali\u015bmy odpowiedni dla nas j\u0119zyk to jest to czas, aby przej\u015b\u0107 do wybranego narz\u0119dzia, w kt\u00f3rym powstanie w\u0142a\u015bciwy test. Na potrzeby artyku\u0142u u\u017cywam Eclipse Mars. Tworz\u0119 nowy projekt javovy, dodaj\u0119 wszystkie niezb\u0119dne biblioteki, tj. <strong>testng, jcommander<\/strong> oraz biblioteki ze \u015bcie\u017cki <em>C:\\Program Files(x86)\\Experitest\\SeeTest\\clients\\java<\/em> (domy\u015blna \u015bcie\u017cka gdzie zainstalowany jest SeeTest). Dodaje now\u0105 klas\u0119 i kopiuj\u0119 do niej kod wygenerowany przez Clienta.&nbsp;Przed testem tworzona jest nowa instancja Clienta, ustawiana jest \u015bcie\u017cka do repozytorium obiekt\u00f3w, z kt\u00f3rej Client ma korzysta\u0107 do rozpoznawania kontrolek, ustawiany jest reporter, urz\u0105dzenie oraz aplikacja jest uruchamiana na urz\u0105dzeniu. <em>projectBaseDirectory<\/em> \u2013 jest to \u015bcie\u017cka do repozytorium obiekt\u00f3w w naszym projekcie SeeTest\u2019owym.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/beforeTest.png\"><img decoding=\"async\" width=\"760\" height=\"263\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/beforeTest.png\" alt=\"BeforeTest\" class=\"wp-image-2828\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/beforeTest.png 760w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/beforeTest-300x104.png 300w\" sizes=\"(max-width: 760px) 100vw, 760px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 5 BeforeTest<\/figcaption><\/figure>\n\n\n\n<p>Nast\u0119pnie uruchamiane s\u0105 dwa testy, w kolejno\u015bci zgodnej z priorytetem. <em>invocationCount<\/em> \u2013 jest to parametr pochodz\u0105cy z testNG i oznacza ilo\u015b\u0107, jak\u0105 dany test ma si\u0119 wykona\u0107. Jako 2 parametr metody <em>elementSendText()<\/em> podaje si\u0119 nazw\u0119 kontrolki \u2013 tak\u0105 sam\u0105 jak w repozytorium Clienta.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/test.png\"><img decoding=\"async\" width=\"682\" height=\"362\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/test.png\" alt=\"Metody testowe\" class=\"wp-image-2829\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/test.png 682w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/test-300x159.png 300w\" sizes=\"(max-width: 682px) 100vw, 682px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 6 Metody testowe<\/figcaption><\/figure>\n\n\n\n<p>Na ko\u0144cu po zako\u0144czeniu testu ma wygenerowa\u0107 si\u0119 raport oraz aplikacja ma zosta\u0107 zamkni\u0119ta. Pami\u0119\u0107 u\u017cywana przez Clienta zostaje zwolniona.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/afterTest.png\"><img decoding=\"async\" width=\"537\" height=\"104\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/afterTest.png\" alt=\"AfterTest\" class=\"wp-image-2830\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/afterTest.png 537w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/afterTest-300x58.png 300w\" sizes=\"(max-width: 537px) 100vw, 537px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 7 AfterTest<\/figcaption><\/figure>\n\n\n\n<p>Kiedy uruchomimy test jako test TestNG zauwa\u017cymy, \u017ce test wykonuje si\u0119 na urz\u0105dzeniu, a zrzut przesy\u0142any jest na monitor. Po wszystkim wygenerowany b\u0119dzie raport oraz statystyki, jak cz\u0119sto test failuje, jak cz\u0119sto przechodzi i ile razy by\u0142 uruchamiany. Dodatkowo raport zawiera dla ka\u017cdej wykonanej przez Clienta akcji zrzut ekranu co si\u0119 sta\u0142o po klikni\u0119ciu a tak\u017ce w trakcie klikania. Inn\u0105 zalet\u0105 jest zak\u0142adka <em>Debug Properties<\/em>, gdzie znajduj\u0105 si\u0119 informacje takie jak clientId, port, dtime, nazwa urz\u0105dzenia, logLine itd.<\/p>\n\n\n\n<p>W kolejnych artyku\u0142ach postaram si\u0119 jeszcze bardziej przybli\u017cy\u0107 narz\u0119dzie od firmy Experitest, a tak\u017ce pokaza\u0107 kolejne jego zalety, jak cho\u0107by integracja z Jenkinsem czy korzystanie z chmury. Zach\u0119cam do odtworzenia powy\u017cszych krok\u00f3w i spr\u00f3bowania samodzielnego napisania testu dla dowolnej aplikacji mobilnej, kt\u00f3rej build posiadacie.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Chcesz lepiej zrozumie\u0107 aplikacje i systemy, kt\u00f3re testujesz? Do\u0142\u0105cz do ModernTester, poznaj najpotrzebniejsze narz\u0119dzia, frameworki oraz j\u0119zyki programowania i \u0107wicz na specjalnie przygotowanych \u015brodowiskach testowych: <a href=\"https:\/\/moderntester.sii.pl\/\" rel=\"nofollow\" >Platforma e-learningowa ModernTester<\/a><\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;2823&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;0\\\/5 ( votes: 0)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Nie taki diabe\u0142 straszny, jak go maluj\u0105 \u2013 czyli testy aplikacji mobilnych&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 0px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            <span class=\"kksr-muted\"><\/span>\n    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Wraz z post\u0119pem technologii zmienia si\u0119 model korzystania z Internetu, dost\u0119pu do rozrywki czy wykorzystywania informacji. Kiedy\u015b \u017ar\u00f3d\u0142em wiedzy by\u0142y &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/nie-taki-diabel-straszny-jak-go-maluja\/\">Continued<\/a><\/p>\n","protected":false},"author":37,"featured_media":2831,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1317],"tags":[368,275,367,146],"class_list":["post-2823","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-testowanie","tag-eclipse","tag-mobile","tag-seetest-auomation","tag-testing"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/06\/devil-phone_2.jpg","category_names":["Testowanie"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/2823"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/37"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=2823"}],"version-history":[{"count":2,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/2823\/revisions"}],"predecessor-version":[{"id":23635,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/2823\/revisions\/23635"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/2831"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=2823"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=2823"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=2823"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}