Je fais une capture d'écran pendant l'exécution du test d'interface utilisateur par l'agent Azure.
Pour une raison quelconque, cette ligne ne se termine jamais, il n'y a pas d'erreur, aucune exception, elle attend indéfiniment:
public byte[] TakeScreenshot() { byte[] buffer = new byte[recorderParams.SourceWidth * recorderParams.SourceHeight * 4]; HooksSetup.AppendToFile("Taken screenshot 1"); using (var bmp = new Bitmap(recorderParams.SourceWidth, recorderParams.SourceHeight)) { using (var g = Graphics.FromImage(bmp)) { g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighSpeed; g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Low; g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighSpeed; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None; // it gets stuck on a call below g.CopyFromScreen(Point.Empty, Point.Empty, new Size(recorderParams.SourceWidth, recorderParams.SourceHeight), CopyPixelOperation.SourceCopy); g.Flush(); var bits = bmp.LockBits(new Rectangle(0, 0, recorderParams.SourceWidth, recorderParams.SourceHeight), ImageLockMode.ReadOnly, PixelFormat.Format32bppRgb); Marshal.Copy(bits.Scan0, buffer, 0, buffer.Length); bmp.UnlockBits(bits); } } return buffer; }
3 Réponses :
Je pense que le problème est lié au fait que votre CopyFromScreen
s'exécute dans un agent sans les mêmes capacités que vous avez sur votre bureau (connexion, résolution, différents navigateurs, autorisations d'administration, etc. .).
Microsoft dit dans son document:
Lors de l'exécution de tests automatisés dans le pipeline CI / CD, vous pouvez avoir besoin d'une configuration spéciale pour exécuter des tests d'interface utilisateur tels que des tests d'interface utilisateur Selenium, Appium ou codée.
Les considérations et les configurations sont expliquées dans cet article:
Si vous avez besoin de résoudre votre test, consultez cet article:
La seule raison derrière ces problèmes était que l'agent n'avait pas eu assez de temps pour se connecter et que la méthode Graphics.CopyFromScreen
était bloquée. J'ai dû reporter la prise de captures d'écran et tout a commencé à fonctionner.
Vous pouvez consulter les laboratoires Azure DevOps ici pour exécuter des tests d'interface utilisateur dans le cadre du pipelines.
Quel azure agent utilisez-vous?
Votre code s'exécute probablement dans une application qui n'a pas d '"écran": stackoverflow.com/questions/18870987/...