‹ Takaisin Blogit-pääsivulle

RPA kesähaasteen purku yhteenvetona

· Materiaalit

Knowit järjesti kesällä #mimmitkoodaa RPA haasteen, jonka tarkoituksena oli tehdä robotti suorittamaan ruokakauppaostoksia netissä. 26.8. järjestettiin haasteen purkutilaisuus, jossa Knowitin automaatiomimmit Anu Lindell ja Minna Mari Leivo esittelivät kaksi erilaista koodiratkaisua. Osallistujat saivat myös tilaisuuden kysellä omista toteutuksistaan.

Koodiesimerkit

Koodi on usein tekijänsä näköistä ja alkuvaiheessa koodi voi olla hyvinkin yksinkertaista. Koodin ulkonäkö ja rakenne eli arkkitehtuuri kehittyy osaamisen kasvaessa, usein oppia tulee muilta Robot Framework käyttäjiltä. Minna Marin koodi on esimerkki siitä, miltä toimiva koodi voisi kaikista yksinkertaisimpana näyttää, ja Anun koodissa on nähtävillä hieman edistyneempiä käyttötapoja. Varsinkin alussa on tärkeää keskittyä koodin toimivuuteen, muihin asioihin voi panostaa sitten kun sisäistää paremmin toimintalogiikan. Kuten muussakin koodaamisessa, ei ole väärää eikä oikeaa tapaa tehdä.

Koodiesimerkki 1 / Minna Mari

Minna Marin koodissa kaikki toiminta on kirjoitettu suoraan Test Casen alle
Minna Marin koodissa käytettiin selaimesta kopioituja xpatheja

Koodiesimerkki 2 / Anu

Anun koodissa käytettiin muuttujia
Anun koodissa käytettiin omia Keywordeja

Läpikäydyt asiat

Edes suoraan selaimen developer toolsista kopioitu xpath ei aina toimi, miksi?Tarkista vielä kopioimasi tai kirjoittamasi xpath selaimen developer tools näkymässä. Paina CTRL+F ja syötä xpath. Näin näet nopeasti löytyykö sivulta oikeasti xpathiin osuva elementti.

Tarkista vielä kopioimasi tai kirjoittamasi xpath selaimen developer tools näkymässä. Paina CTRL+F ja syötä xpath. Näin näet nopeasti löytyykö sivulta oikeasti xpathiin osuva elementti.

Tarkista log.html tiedostosta Capture Screenshot kohdasta, että robotti on sillä sivulla millä ajattelet sen olevan. Robotti on yksinkertaisesti selainta huomattavasti nopeampi, jolloin ratkaisuksi riittää Sleep tai Wait Until Page Contains Element

Kopioitujen ja itse kirjoitettujen xpathien ero?

Selaimen developer toolsista kopiotu xpath on usein absoluuttinen polku tiettyyn elementtiin esim: /ul/li/div/a/div[3]/div, jonka vuoksi sivuston rakenteessa tapahtuvat muutokset todennäköisesti aiheuttavat sen, että elementtiä ei joko löydy enää tai löytyy jokin väärä elementti.

Suosittelemme opettelemaan xpath syntaksin esim. //*[contains(text(),”Haettava teksti”)], jotta sivuston rakenteessa tapahtuvat muutokset eivät aiheuta harmia. Tämäkään tapa ei ole kuitenkaan 100 % varma, aina voi tapahtua muutoksia, joita joutuu koodiin sitten päivittämään.

Anu on ratkaissut tilanteen niin, että hänellä on oma muistio, johon on kirjannut tärkeimmät xpath syntaksit ja soveltaa niitä. Apuvälineet ovat täysin sallittuja, koska kaikkea ei voi tai tarvitsekaan oppia ulkoa. Tärkeintä on oppia, miten tieto löytyy!

Erilaisten tunnisteiden käyttäminen

Samassa koodissa on täysin ok käyttää eri tunnistetyyppejä sekaisin. Tunnistetyyppejä ovat esimerkiksi xpathit, css-tunnisteet ja id-tunnisteita. Css-tunnisteella tarkoitetaan elementin muotoiluun liittyvää tunnistetta esimerkiksi class=content tai class=modal-title. Id-tunnisteella tarkoitetaan elementille annettua nimeä eli esimerkiksi id=receipelist tai name=receipelist.

Ostoskoriin lisääminen oli haastavaa, mikä ratkaisuksi?

Koodiesimerkissä 1 on käytetty avainsanaa Mouse Over, joka vie hiiren käytännössä halutun elementin päälle kuten käyttäjäkin voisi viedä. Tämän jälkeen elementtiä pystyy painamaan.

Koodiesimerkissä 2 klikataan tuotetta ja tuotteen omalla sivulla klikataan Lisää ostoslistalle-painiketta.

Käytättekö robottia työn ulkopuolella? Jos käytätte, niin minkälaisiin asioihin?

Anu tutustui uuteen selain automaatiokirjastoon Browseriin kesällä, joka on vielä kehitysvaiheessa. Lisäksi hän on yrittänyt kaverilleen tehdä vuokra-asuntojen hintaseuranta robottia, joka jäi kesken varsin kirjavien ilmoitusten vuoksi.
Minna Marilla on verkkokaupparobotti, joka käy katsomassa useista verkkokaupoista, että onko tullut uusia Fallout tuotteita myyntiin.

Onko selainsovellusten automatisointi helpompaa kuin työpöytäsovellusten?

Monesti työpöytäsovelluksistakin kannattaa tarkistaa ovatko ne oikeasti selainpohjaisia, jolloin niiden automatisointi sujuu yleensä yhtä hyvin kuin verkkosivujenkin automatisointi. Kokeilemalla esim. F12 voi saada auki samanlaisen developer toolin kuin verkkosivuilla. Työpöytäsovellusten automatisointiin on oma kirjasto WhiteLibrary https://github.com/Omenia/robotframework-whitelibrary, jota Anu eikä Minna Mari ole päässyt vielä kokeilemaan.

Batch-tiedostojen käyttö

Muistioon voi kirjoittaa robotin käynnistyskoodin ja tallentaa sen päätteellä cmd tai bat. Kaksoisklikkaamalla kuvaketta, avautuu automaattisesti komentokehoite ja robotti ajetaan. Komentokehoiteikkuna sulkeutuu ajon jälkeen. Tulokset on katsottava log.html tai report.html tiedostosta.

Ideoita yhteisiksi jatkoharjoituksiksi mimmit koodaa yhteisölle

  • Yhteinen tutustuminen WhiteLibraryyn- esimerkiksi Windowsin laskimen käyttö robotilla.
  • GitHubin käyttö yhdessä, jolloin aina ei tarvitse lähteä ihan tyhjästä liikkeelle.
  • Lomakohteen lentojen hintaseurantarobotti
  • Tori.fi sivuston ilmoitusten uusiminen

Jatketaan keskustelua mimmit koodaa Slackissa #RPA kanavalla! Miljalta saa kutsun Slackiin tarvittaessa. Myös muut Slackin käyttäjät voivat lisätä käyttäjiä, joten verkostot käyttöön!

Lisäopiskelu:
https://testautomationu.applitools.com/robot-framework-tutorial/ (ilmainen)

https://www.linkedin.com/learning/robot-framework-test-automation-level-1-selenium

Udemyssä on runsaasti kurssitarjontaa. Muista, että täyttä hintaa ei ole välttämättä järkevää maksaa, koska Udemyssä on ale varsin usein!

Tsekkaa kesähaasteen purku YouTubesta!

https://www.youtube.com/watch?v=gRHtYVXwzac