2016-08-01 12 views
1

Derzeit habe ich ein Formular mit 10 Feldern, die ich sendkeys tun muss> speichern Sie den Wert und nach diesem Wert beim Speichern des Formulars. Für jedes dieser Felder muss ich eine Funktion erstellen und den Wert in einer Variablen speichern oder gibt es einen besseren Weg?Webdriver JS - Speichern sendKeys zu Variable und Wiederverwendung

Mein eigentlicher Code:

var email = driver.findElement(By.name('email')); 
email.sendKeys('[email protected]'); 
email.getAttribute("value").then(function(email_text) { 
    var email = email_text; 
}); 

Cheers, Rafael

+0

Sie Express-Sitzungen verwenden können, einige Daten in Session speichern und man kann es überall Zugriff aus dem Projekt –

+0

@MarioRozic Beispiel? – RFtests

+0

Was ist los mit dem Speichern des Wertes in einer Variablen? –

Antwort

0

Wenn ich richtig verstehe, sieht der Prozess wie Sie einige Felder ausfüllen sollen, ihre Werte erinnern und Werte überprüfen, nachdem das Formular abgeschickt wurde .

Es gibt keine Standardentscheidung für solche Aufgaben, es hängt vom Entwickler ab.

Also, wir wissen, welche Werte wir brauchen und es zum Beispiel in der Karte

{ 
'email':'[email protected]', 
'telephone':111222333 
} 

Key ist der Name für die Suche nach Element, Wert speichern kann - für Access sendKey und Checkvalue Methoden.

Sie sollten zwei Methoden schreiben, die mit der Testdatenzuordnung arbeiten und Eingaben und Prüfwerte im Zyklus durch Zuordnungstasten füllen.

+0

Zum Beispiel, wenn mein Formular 10 Felder hat, um jeden sendKeys von diesen Feldern zu speichern, sehen Sie den Code (der Code ist zu lang, nur um dies zu tun): https://gist.github.com/anonymous/8ad5ffbe2c2d134b1297f69e259c591a. Beispielsweise kann ich mit Python einfach 'email = driver.findElement (by_name ('dog')) verwenden. SendKeys ('tobby');'. Mit dem Knoten gibt es eine einfache Möglichkeit, dies zu tun? – RFtests

+0

Sie können die Entscheidung mit Zyklus und Darstellung Ihrer Eingabewerte als Array von Objekten anwenden. Es wird Ihren Code verringern – Sabik

0

Meinst du, du willst dies als ein Array tun?

// you can represent each field as an object 
var fields = [ 
    { elementName: 'email', expectedText: '[email protected]' }, 
    { elementName: 'password', expectedText: 'bla bla bla' } 
]; 

// sendKeys to each field with the specified text 
fields.forEach(function(field) { 
    browser.driver.findElement(by.name(field.elementName)).sendKeys(field.expectedText); 
}); 

// to get all the field text (from promises) and store it as an array 
browser.controlFlow().execute(function() { 
    var textArray = []; 
    fields.forEach(function(field) { 
     browser.driver.findElement(by.name(field.elementName)).getAttribute('value').then(function(actualText) { 
      textArray.push({elementName: field.elementName, actualText: actualText}); 
     }); 
    }); 
    return textArray; 
}).then(function(storedTextArray) { 
    // do something with the stored text array here 
}); 
+0

Zum Beispiel, wenn mein Formular 10 Felder hat, um jeden sendKeys von diesen Feldern zu speichern, sehen Sie den Code (der Code ist zu lang, nur um dies zu tun): https://gist.github.com/anonymous/8ad5ffbe2c2d134b1297f69e259c591a. Beispielsweise kann ich mit Python einfach 'email = driver.findElement (by_name ('dog')) verwenden. SendKeys ('tobby');'. Mit dem Knoten gibt es eine einfache Möglichkeit, dies zu tun? – RFtests