2016-08-23 1 views

Répondre

1

Il n'y a pas de façon intégrée de faire cela avec Intern. La méthode takeScreenshot appelle simplement le service de capture d'écran de Selenium, qui renvoie une capture d'écran de la page entière en tant que PNG codé en base 64. Le takeScreenshot du stagiaire le convertit en tampon de nœud avant de transmettre le résultat à l'utilisateur.

Pour rogner l'image, vous devrez utiliser une bibliothèque externe ou un outil tel que png-crop (notez que je n'ai jamais utilisé ceci). Le code pourrait ressembler à ce qui suit (non testé):

var image; 
var size; 
var position; 

return this.remote 
    // ... 
    .takeScreenshot() 
    .then(function (imageBuffer) { 
     image = imageBuffer; 
    }) 
    .findById('element') 
    .getSize() 
    .then(function (elementSize) { 
     size = elementSize; 
    }) 
    .getPosition() 
    .then(function (elementPosition) { 
     position = elementPosition; 
    }) 
    .then(function() { 
     // assuming you've loaded png-crop as PNGCrop 
     var config = { 
      width: size.width, 
      height: size.height, 
      top: position.y, 
      left: position.x 
     }; 
     // need to return a Promise since PNGCrop.crop is an async method 
     return new Promise(function (resolve, reject) { 
      PNGCrop.crop(image, 'cropped.png', config, function (err) { 
       if (err) { 
        reject(err); 
       } 
       else { 
        resolve(); 
       } 
      }); 
     }); 
    }) 
+0

merci, je vais utiliser quelque chose comme WebdriverCSS qui est capable de faire ce dont j'ai besoin. – scosmaa

+0

Intéressant, je n'avais pas vu WebDriverCSS. Nous travaillons actuellement sur une mise à jour des tests de régression visuelle pour Intern, donc ce type d'opération pourrait devenir un peu plus facile dans le futur. – jason0x43

+0

Comment importer le module node.js (PNGCrop) dans le module de test Intern? – Shrike