Protractor: Impossible d'insérer 100 000 caractères des données de test dans un champ de texte

Créé le 23 sept. 2015  ·  3Commentaires  ·  Source: angular/protractor

Salut. À des fins de test, je dois insérer 100 000 caractères dans le champ de saisie. Le problème est que sendKeys () ne peut pas gérer une telle quantité de données et le navigateur se fige. Il commence à saisir des données dans un champ de texte, puis après un certain temps, il cesse de répondre et le test échoue en raison du délai d'attente.

J'ai essayé différentes façons de résoudre ce problème, comme diviser le fichier en quelques morceaux, mais il ne peut même pas gérer 30 000 caractères.

Je ne fais que copier-coller manuellement les données de l'éditeur de texte dans ce champ et cela fonctionne très bien.

Quelqu'un a-t-il la solution pour insérer dans le champ de texte 100 000 caractères?
Merci!

Code:
var fs = exiger ('fs');
var chemin = require ('chemin');
var filePath = path.join (__ dirname, 'datafile.json');
var data = require (filePath)
browser.findElement (By.tagName ("textarea")). sendKeys (data.cbb);
browser.sleep (5000);
browser.findElement (Par.nom ("Soumettre")). click ();

question

Tous les 3 commentaires

Les sendKeys de WebDriver ne sont pas vraiment destinés à gérer 100 000 pressions sur les touches. Il simule les événements de manière native, donc pour chaque personnage individuel, il envoie une demande distincte.

Je suppose que vous pouvez contourner ce problème en définissant le texte directement via JavaScript exécuté dans le navigateur:

browser.executeScript('findMyTextarea.textContent="myreallyreallylongstring"');

Clôture en tant que question d'assistance - Veuillez adresser les questions d'assistance générales comme celle-ci à un canal d'assistance approprié, voir https://github.com/angular/protractor/blob/master/CONTRIBUTING.md#questions

J'ai résolu ce problème avec ce code:

var data = fs.readFileSync(filePath,'utf8')
var element = browser.findElement(By.tagName("textarea"));
browser.executeScript("arguments[0].value = arguments[1];", element, data);

Merci de votre aide! : +1:

Cette page vous a été utile?
0 / 5 - 0 notes