Selenium Pour désactiver la position du contenu fixe Pour supprimer les données en double lors de la prise de vue de la page Web entière

Je peux prendre des captures d'écran de la page entière en défilant vers la fenêtre, mais en combinant les problèmes de duplication (position fixe en-tête / contenu) dans toutes les pages. Est-ce qu'ils sont une solution pour résoudre ce problème. Veuillez publier votre réponse clairement. Entrez la description de l'image ici

FireFox ouvre la barre d'outils du développeur et tapez shift + f2 puis tapez cette commande.
screenshot d:\yash.png --fullpage Puis il réduit le clientWidth et prend une capture d'écran. Selenium-WebDriver FireFox- ScreenShot

En utilisant du sélénium avec IE (décochez les cases de sécurité et confidentialité et réduisez Internet, acceptez tous les cookies à zéro). Utilisez ieCapabilities.setCapability("ignoreZoomSetting", true); Alors il prend une capture d'écran de la page entière en réduisant la largeur du client sans problème de pixel d'image. Mais la capture d'écran sur ce site: http://help.dottoro.com/ljlumkqh.php n'est pas comme prévu.

Mais Chrome ne nécessite qu'une partie visible de la page Web. Pour prendre une photo complète, nous devons faire défiler jusqu'à ClientHeight et combiner tous les écrans.

Le premier point est que vous n'avez pas besoin de faire défiler pour prendre un écran plein écran en sélénium.

Approche pour supprimer les données en double:

  • Effectuez une capture d'écran complète et ne l'enregistrez pas dans aucun fichier.
  • Observez les données en double (objet en-tête)
  • Créez l'objet bufferedImage pour le fichier de ImageIO.read() écran à l'aide de la méthode ImageIO.read() .
  • Obtenez les coordonnées x & y pour la partie en double (Header) en utilisant les .getLocation().getX()/getY() .
  • À partir d'une capture d'écran entière, supprimez les données en double en utilisant la méthode .getSubimage() .
  • Puis enregistrez l'image dans n'importe quel fichier à l'aide de la méthode ImageIO.write() .

Je pense qu'il devrait y avoir un code pour étayer votre question.

Mais, en supposant que vous faites défiler votre page explicitement pour prendre la capture d'écran.

Solution / Suggestion / Conseil: Selenium fait défiler par défaut la page pour prendre la capture d'écran de la page complète.

Veuillez référencer la capture d'écran capturée par le code.

Code pour prendre la capture d'écran ci-dessus:

  WebDriver driver = new FirefoxDriver(); driver.get("http://www.w3schools.com/html/default.asp"); File myScreenShot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(myScreenShot, new File("D:\\ff.png")); 

Reportez – vous ceci pour plus d'informations sur la capture d'écran.

Supprimer les données collantes

Fenêtre. GetComputedStyle () et ses navigateurs pris en charge.

Objet CurrentStyle pour IE avant version 9

 var elems = window.document.getElementsByTagName('*'); for(i = 0; i < elems.length; i++) { if (window.getComputedStyle) { var elemStyle = window.getComputedStyle(elems[i], null); if(elemStyle.getPropertyValue('position') == 'fixed' && elems[i].innerHTML.length != 0 ){ elems[i].parentNode.removeChild(elems[i]); } alert (Works For all Browsers); }else { var elemStyle = elems[i].currentStyle; if(elemStyle.position == 'fixed' && elems[i].childNodes.length != 0 ){ elems[i].parentNode.removeChild(elems[i]); } alert (Works for IE browsers version below 9); } }