Testování (Selenium apod.): jak řešit příchozí události rubrika: Programování: Jiné

8 v6ak
položil/-a 22.12.2013

Chtěl bych testovat AJAXovou webovou aplikaci. Používám Selenium WebDriver trošku okořeněný Play Frameworkem.

Do aplikace přicházejí nějaké události. Můžete si představit třeba proud novinek, zprávy v chatu nebo něco podobného. Já chci otestovat, že v některé chvíli (po nějaké akci vyvolané odjinud) přijde očekávaná zpráva. Jak na to?

Aby to bylo ještě komplikovanější, budu odmazávat staré zprávy.

Můžu tu zprávu hledat v DOMu. Jenže:

  • I při testování tu může být určitá latence. Jak to řešit? Thread.sleep je prasárna.
  • Kdyby mohlo dojít více zpráv, jak vybrat tu pravou? Nemůžu prostě jen číst tu poslední...

Řešili jste už něco podobného? Jde mi třeba i o princip řešení, i pokud používáte jiný nástroj.

Komentáře

  • brano : Na to čakanie existuje wait funkcionalita priamo v Seleniu: http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp. Pokiaľ môže v krátkom intervale prísť niekoľko správ, možno treba kontrolovať celý zoznam správ, či sa tam požadovaná správa nachádza. 22.12.2013
odkaz
Anonym
odpověděl/-a 23.12.2013
 
upravil/-a 23.12.2013

Normálně si ve webdriveru zaregistruj vlastní event listener na událost příchozích zpráv a v něm testuj. Nejspíš to bude chtíl vylepšit design JS komponent, aby šlo ten event observovat, ale o to líp.

Komentáře

  • v6ak : Asi to tak nějak dopadne, ale musel bych něco vyhodit do globální proměnné. Pokud to teda neudělala nějakým způsobem knihovna (Portal). Většinou se ale takovému postupu bráním. 23.12.2013
  • Anonym : Když necháš probublat syntetický event, nemusíš nastavovat žádnou globální proměnnou. 23.12.2013
  • v6ak : Nejde mi o nastavování globální proměnné, ale o to, že si to potřebuju k něčemu zaregistrovat. Jenže typicky proměnné skrývám pomocí (function(){...})(). Takže nevím, kde bych si tu událost zaregistroval. Nebo mám hledat něco v názvu _syntetický_ event? Googlil jsem ten název, ale patrně se ten pojem používá v různých kontextech. 25.12.2013
  • Anonym : Třeba v jQuery můžeš použít http://api.jquery.com/category/ajax/global-ajax-event-handlers/, kde se zahookuješ na všechny AJAX requesty. Pokud používáš něco jinýho, co nemá možnost se nějak zahookovat, je potřeba odpálit vlastní event a ten odchytit třeba na body https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_t.... 26.12.2013

Pro zobrazení všech 2 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.