Selenium IDE

I början av min Selenium-exkursion trodde jag att deras plugin till Firefox skulle vara lösningen och göra livet enkelt. Plugin:en spelar in vad man gör i webbläsaren och sedan kan spela upp samma sak eller exportera testfallet i önskat kodformat. Så blev det inte..

Testfallen man spelar in blir väldigt basala; klicka på den länken och klicka på den länken, titta på det elementet. De behöver alltid justeras på kodnivå för att verifiera rätt saker och kunna navigera fram på en sida som inte är helt statisk. Nu har jag helt frångått den funktionen och skriver mina testfall från grunden. Det är bara ett fåtal metoder i Selenium-biblioteket jag använder och de är ganska självförklarande generellt, det mesta arbetet sker utanför det biblioteket.

Jag upptäckte att någonting var galet när jag efter att ha spelat in testfall med flera verifieringspunkter så gick det igenom varenda gång jag spelade upp det. Så länge sidan laddades så gick testfallet igenom, även när det var uppenbart fel!
Det hela berodde på att selenium använder Exceptions för att verifiera saker i inspelningsläget, vilket innebär att en text måste skjutas in i verifieringsmetoden och alltså måste metodanropet ändras manuellt varje gång det används.

Nu har jag skrivit en egen klass som hanterar verifieringsstegenistället. Det är både smidigare och snyggare!

3 reaktioner på ”Selenium IDE

  1. Är inte helt med på vad du menar här?

    ”Det hela berodde på att selenium använder Exceptions för att verifiera saker i inspelningsläget, vilket innebär att en text måste skjutas in i verifieringsmetoden och alltså måste metodanropet ändras manuellt varje gång det används.”

  2. Helt enkelt att verifieringssteget bygger en try/catch sats och sedan fallerar testet om catch-satsen skrivit ett meddelande i verifieringssträngen. Exempel:
    try{
    Assert.IsTrue(selenium.IsTextPresent("Simon Garfield"));
    ...verifierar att strängen "Simon Garfield" finns på sidan
    } catch (AssertionException e) {
    verificationErrors.Append(e.Message);
    ..stoppar in felmeddelandet i verificationssträngen
    }

    I slutet av testfallet körs en rad Assert.AreEqual("", verificationErrors.ToString());

    Fine. Det är inte snyggt, men det hade fungerat om koden varit fullständig. När det ser ut som ovan kommer e.Message alltid att returnera en tom sträng, vilket i sin tur gör att verificationErrors.ToString() alltid kommer att vara tom och dämer kommer den sista raden alltid vara sann och testfallet går igenom.

    För att det ska fungera måste man stoppa in en sträng i try-delens Assert så det ser ut som nedan:
    try{
    Assert.IsTrue(selenium.IsTextPresent("Simon Garfield"), "Här blev det fe!");
    } catch (AssertionException e) {
    verificationErrors.Append(e.Message);
    }

  3. aha, det är språkspecifikt..kände inte igen det problemet men jag kör Ruby. Det blir mindre att skriva då 🙂

Kommentarer inaktiverade.