Mi nem látható a szemnek - - kövesse a változásokat a weboldalakon, a készleten
Ezen kívül. sok webhely dinamikus elemekkel rendelkezik. Számos feladat magában foglalja ezen elemek egybeesésének ellenőrzését, más feladatokban pedig figyelmen kívül kell hagyni őket.
Egy másik probléma az oldal összes elemének elmozdítása egy kis távolságig (szó szerint 1-2 képpont). Az elrendezésben bekövetkezett változások ellenőrzésénél nagyobb kiterjedésűeknél is figyelembe kell venni őket, de általában ezeket az eltéréseket figyelmen kívül kell hagyni.
Így a rendszernek képesnek kell lennie:
- A képernyőképek rögzítése, mentése és összehasonlítása egymással;
- Interakció az oldalelemekkel való felvétel előtt;
- Lehetősége van letiltani a dinamikus elemek ellenőrzését az oldalon;
- Adja meg a felhasználónak a rögzített képernyőkép egybeesésének "pontosságával" a "standard" értéket;
- Van egy felhasználóbarát felület a rendszer rejtett elemeivel való interakcióhoz.
Írva a fenti azt sugallja, hogy szükségünk van két globális blokk - láthatatlan a felhasználó blokk, ahol van minden varázslat termelni, összehasonlító és elismerésének azonos vagy különböző képernyők, valamint egy blokk, amely egy átlagos felhasználó nem égető vágy, hogy menjen be a kódot , kezelheti az első egységet.
A címből arra lehet következtetni, hogy valahogy ez az eszköz társul PhantomJS-hez. És kiderül, hogy ez tényleg így van. A "böngésző" használatához használjon egy PhantomJS + CasperJS csomagot. Ez utóbbit tesztelési forgatókönyvek végrehajtására is használják (PhantomCSS használata esetén az egyetlen eszköz). Itt várunk még egy jó hírt - a CapserJS képes közvetlenül kapcsolatba lépni az oldal elemeivel. Hurrá!
Ennek eredményeképpen a PhantomCSS segítségével a következő forgatókönyv került megvalósításra:
- állítsa be a használt képernyő méretét;
- Menjen a kívánt oldalra;
- Várja meg, amíg teljesen fel van töltve;
- Hogy fedjük le mindazt, amit látunk, először darabokra vágunk egy bizonyos magasságot;
- Hasonlítsa össze a már létező szabványos képernyőképeket az aktuális munkamenet során elnevezett tartalmakkal.
Így feltételezhetjük, hogy szinte minden problémát megoldunk. Miután örömmel töltötte elénk a webes felületet a kedvenc Ruby on Rails-en. Ez adja a felhasználó képes felépíteni a projekt határozható meg a forgatókönyvet, hogy minden oldal leírja a kezdeti lépéseket az elemek (szelektor mely objektumokat, hogy kölcsönhatásba lépnek, és ha szükséges, beírni a szöveget), hogy a teszt eredményeit. Itt van a könyvtárfelület és az irányítási rendszer (egy szar RoR használatával).
Az első képernyő a projektkatalógus-felületet mutatja, amelyen keresztül láthatja:
Ezután illessze hozzá a PhantomCSS-ből kapott modulokat, nyomja meg a gombot a kívánt oldal készítéséhez, és ... Minden lóg. Feszes. Rémülten rájövünk, hogy a screenshotokat forgatták, valamit elkezdték összehasonlítani, és egyszerűen csak az egész processzort ették. Elfogadhatatlan.
Az összehasonlítási folyamat optimalizálására tett kísérlet nem valószínű, hogy a termelékenység nagymértékű növekedését eredményezné - ezt a problémát a magas munkaerő-intenzitás jellemzi. Teljes mértékben adja a komparátor gyötrelmének a processzor egyik magját - a többinek elegendőnek kell lennie a rendszerek és alkalmazások munkájának támogatásához. A webes felület használata nem egyszerű, ezért egyszerűen blokkoljuk egynél több összehasonlítási folyamat futását. Igen, az összehasonlítás sebessége enyhén csökken, de még ilyen korlátozások mellett is, az oldal 5-6 képernyővel kevesebb, mint 1 perc alatt fut.
Az eredmény olyan eszköz, amely lehetővé teszi számunkra, hogy figyelemmel kísérjük a számunkra érdekes oldalak változását. Világos színű részeket talált a standard és a jelenlegi állapot az oldal különbségeket, rugalmas beállítások „tolerancia” lehetővé teszi, hogy figyelmen kívül hagyja, amit nem akarunk összehasonlítani, könyvtár rendszer lehetővé teszi, hogy gyorsan, hogy hol kell figyelni.
A minőségellenőrzési osztály szakemberei a rendszeres feladatok megoldása során az ilyen rendszerek széles körét alkalmazzák.