2017-09-22 3 views
0

Ich untersuche Selen-Web-Treiber in C#. Ich möchte meinen Test so allgemein wie möglich machen. Was ich will, ist, dass wenn mein Formular geladen wird, alle Textfelder identifiziert und mit einigen Dummy-Daten ausgefüllt werden. Wenn ich die switch-Anweisung wie unten angegeben verwende, ist nur das erste Textfeld ausgefüllt. Wie kann ich es machen alle Felder erhalten und sie eins nach dem anderenSelenium WebDriver Generic Test

foreach (var group in form.GroupFormFields) 
     { 
      foreach (var field in group.FormFields) 
      { 
       var fieldId = "txt_" + field.field_title; 

       switch (field.field_type_id) 
       { 
        case "textfield": 
         var textfield = Driver.Instance.FindElement(By.XPath("//input[@type='text']")); 
         textfield.SendKeys("abc"); 
          // field.field_title 
         //fill the form field 
         break; 
        case "email": 
         var email = Driver.Instance.FindElement(By.XPath("//input[@type='email']")); 
         email.SendKeys("[email protected]"); 
         break; 
        case "password": 
         var password = Driver.Instance.FindElement(By.XPath("//input[@type='password']")); 
         password.SendKeys("Abc1234%"); 
         break; 
        case "checkbox": 
         var checkbox = Driver.Instance.FindElement(By.XPath("//input[@type='checkbox']")); 
         checkbox.Click(); 
         break; 
        default: 
         break; 
       } 
+0

Wie viele Gesamtfelder haben Sie auf der Seite? –

+0

@GaurangShah Jedes Formular haben unterschiedliche Anzahl von Feldern, aber ich habe insgesamt 8 verschiedene Arten von Feldern – Jawad

+0

Dann ist ein Schalter Fall ist keine gute Idee, sondern erstellen Sie eine Funktion, die alle diese Werte und füllt das Formular. Sie können diese Funktion für jede Seite verwenden und überschreiben. –

Antwort

1

Schalter Fall füllen ist insbesondere Code auf bestimmte Bedingung auszuführen, so auf das, was Sie als caseField als besonderen Fall vorbei wird nicht geltend gemacht werden, Alle.

Wenn Sie alle Eingabefelder mit Dummy-Daten füllen möchten, ist die einfache Sache, alle Eingabeelemente zu erhalten und durch sie zu iterieren. Ich weiß nicht, C#, aber JAVA und C# ist sehr ähnlich, also könnten Sie diesen Code verstehen.

List<WebElement> inputs = driver.findElements(By.xpath("//input")); 
for(WebElement input: inputs){ 
    input.sendKeys("filled through automation"); 
} 
+0

Ich habe mein Code-Snippet bearbeitet, bitte schauen Sie es sich an – Jawad

0

glaube ich Ihnen eine Liste mit erstellen:

  • Key: id des Eingangs
  • Wert: Wert, den Sie eingeben möchten

das Erstellen einer for-Schleife suchen Suchen Sie in der Liste das Element nach Schlüssel und geben Sie mit Wert ein.

1

Entwicklung Automatisierungsprojekt mit Selen kann schwer zu pflegen sein, da manchmal wir große und komplizierte Systeme automatisieren müssen, Best Practice ist Page Object Entwurfsmuster zu verwenden. Die Implementierung von Page Object in einem Automatisierungsprojekt unterstützt den Programmierer bei der Einhaltung der SOLID-Prinzipien. Sie können Ihr Seitenobjekt mit einer Klasse umschließen, die für die Geschäftslogik zuständig ist - füllen Sie das Formular aus. Bitte lesen Sie das folgende Beispiel

enter image description here

es Wickeln und die Füllung Details Abschnitt

enter image description here

Jetzt implementieren alles, was Sie tun müssen, ist pageObjectContainer.FillDetails zu nennen (einreichen: true)