Stap 4: Doorlopen van meerdere HTML-objecten
Tot nu toe we hebben zijn interactie met afzonderlijke objecten door ze direct te roepen binnen onze code, maar dit is zeer inefficiënt aangezien de meeste webtoepassingen veel divs, formulieren, knoppen, selectievakjes en dergelijke op een enkele pagina hebben. Er is niets mis met het doen van acties op elk HTML-object, maar u zal besteden veel tijd bewerken van uw code.
Bijvoorbeeld als een website heeft 100 selectievakjes uit en klik op alle van hen die u wenst dat u zou moeten 100 coderegels te doen als volgt u de vorige methode. Hoewel Watir-Webdriver heeft gebouwd in technologieën om te helpen steun ons daarbij zo snel en eenvoudig mogelijk.
Voor het grootste deel maken de meervoudsvorm van het object dat je wil te werken op zal een collectie van alle HTML-objecten die overeenkomen met retourneren. Een collectie is gewoon een groepering van de objecten die u kunt dan doorlopen en interactie met de mogelijkheid voor een beknoptere minder coderegels. Samen met deze collecties, moet u wellicht te gebruiken regex om te Watir-Webdriver vertellen wat je wilt binnen deze collectie.
Terug naar onze 100 selectievakjes bijvoorbeeld kunt zeggen dat ze allemaal de ID 'checkbox-X hebben' waarbij X de numerieke waarde van het selectievakje is. Als we Watir-Webdriver om te zoeken naar een specifieke checkbox ex vertellen: "checkbox-10" dat is de enige checkbox die zal worden toegevoegd aan de lijst. Om op te lossen dit we eenvoudige regex kunnen gebruiken om het maken van een "wild card" match voor alle selectievakjes die wij willen verzamelen.
checkboxes = browser.checkboxes(:id => /checkbox-/) checkboxes.each do |checkbox| checkbox.set end
In dit voorbeeld gemaakt we een nieuwe variabele met de naam selectievakjes om te houden van onze collectie en we de meervoudsvorm van checkbox (checkboxes) gebruikt om te vertellen van de Watir-Webdriver geven ons alle selectievakjes die overeenkomen met onze ID-naam die wij hebben geleverd. De ID-naam is een regex-wedstrijd, die in wezen zegt "als de id van een checkbox bevat 'checkbox-' dan toe te voegen aan de lijst". Daarna wij (lus) doorlopen in onze keuzes en elkaar op true (klik erop).
Zoals u kunt zien hebben we gewoon afgeslankte 100 lijnen van code te klikken op 100 selectievakjes in 4 lijnen van code die dezelfde taak doet. Dit kan worden toegepast op bijna elk HTML-object dat als een enkelvoud vormen dergelijke als knop, radio, checkbox, li, div, text_field en vele anderen.