2017-03-14 3 views
3

Je rencontre des problèmes lors de l'exécution de tests Selenium sur un esclave Jenkins. Pour être précis, la résolution d'affichage utilisée pour exécuter les tests est trop petite, ce qui entraîne l'échec de certains tests.Définition de la résolution d'affichage pour les tests Selenium sur une machine virtuelle en tant qu'esclave Jenkins

Pour vérifier la résolution d'affichage, nous enregistrons la hauteur d'affichage et la largeur de la console, en utilisant:

driver.manage().window().maximize(); 
System.out.println("Window height: " + driver.manage().window().getSize().getHeight()); 
System.out.println("Window width: " + driver.manage().window().getSize().getWidth()); 

Ce retourne:

Window height: 784 
Window width: 1040 

qui semble une résolution très étrange pour moi. La résolution souhaitée est 1920 x 1080.

Le serveur utilisé comme esclave est une machine virtuelle (Windows Server 2012 R2). L'esclave Jenkins est connecté via l'agent JNLP. L'esclave fait fonctionner le service avec Log On As "Local System" avec l'option "Autoriser le service à interagir avec le bureau" activée.

Jusqu'à présent, nous avons essayé un certain nombre de choses comme:

  • Connexion à esclave VM en utilisant RDP et la déconnexion de quitter la session ouverte avec une résolution d'affichage souhaitée
  • En utilisant Powershell pour définir la résolution d'affichage
  • Réglage de la résolution d'affichage par défaut dans la configuration VM
  • Réglage des dimensions de la fenêtre à l'aide sélénium
  • Et plus ...

Tout cela n'a pas résolu les problèmes. Les suggestions sont les bienvenues!

+0

Vous pouvez probablement définir la taille d'affichage: 'driver.manage(). Window(). SetSize (nouvelle dimension (1920, 1080))' –

+0

@Kishan Patel, cela n'a aucun effet dans ce cas. Je pense qu'il n'est pas possible de définir une taille de cette façon qui est plus grande que la taille d'affichage du serveur. – jurgenvo

+0

J'utilise ubantu en ce moment, donc je ne peux pas vraiment le tester. cependant, j'ai essayé de suivre exe pour régler la résolution avant le début du test. Séparez le script du script de test. et ça a marché pour moi. pouvez-vous essayer. http://tools.taubenkorb.at/change-screen-resolution/ –

Répondre

1

Enfin réussi à résoudre ces problèmes après avoir réalisé que Jenkins n'a pas nécessairement besoin d'exécuter les esclaves en tant que service Windows. Pour démarrer l'esclave, l'agent JNLP peut être téléchargé à partir de Jenkins et copié sur le serveur. Lors de l'exécution du fichier JNLP, vous pouvez sélectionner l'option permettant d'installer l'agent esclave en tant que service.

Jenkins slave agent

Auparavant, nous avions choisi cette option, c'est la raison pour laquelle l'esclave était en cours d'exécution en tant que service. Après l'arrêt et la suppression du service, nous avons réexécuté le fichier JNLP et veillé à ne pas sélectionner l'option.

Les solutions suggérées qui incluaient la déconnexion de la session de bureau à distance et le fait de laisser la session ouverte avec une résolution élevée ne fonctionnaient pas lors de l'exécution de l'esclave en tant que service. Ils fonctionnent cependant lors de l'exécution de l'esclave par défaut.

Assurez-vous que la session de bureau à distance ne se termine pas après une certaine période de temps: Session timeout properties

Hope this helps quelqu'un!

1

Basé sur mon expérience avec ceci, vous ne pouvez pas résoudre ce problème par programme. Vos tests seront exécutés sur la résolution qui a été utilisée la dernière fois lorsque vous avez physiquement accédé à l'affichage de cette VM. Par exemple, si j'ouvre VM sur mon grand écran et le maximise, les tests seront exécutés sur cette résolution. Mais si je l'ouvre sur mon écran d'ordinateur portable et ferme la connexion RDP, les tests seront exécutés sur cette taille d'écran plus petite. Je sais que cela semble étrange, mais je ne pouvais vraiment pas trouver une meilleure solution. : D Maintenant, je dois faire attention à maximiser l'affichage VM sur mon plus grand écran avant de fermer VM. Vous n'aimerez probablement pas cette réponse, mais souvenez-vous-en quand vous vous retrouvez à court d'autres solutions. ;)

+0

J'ai expérimenté avec ça mais ça n'a pas aidé. Connecté à la machine virtuelle avec RDP et déconnecté la session. Le service esclave jenkins s'exécute en tant qu'utilisateur du système local, donc la connexion à la VM avec mon propre utilisateur n'aurait aucun effet. Même en forçant le service à s'exécuter avec mon propre compte utilisateur, il n'a pas utilisé la résolution de la session RDP. – jurgenvo

+0

Ok, mon esclave fonctionnait sur le compte de l'utilisateur local, pas sur le système local, désolé, cela n'a pas aidé. – acikojevic

0

J'ai eu l'expérience du même problème. Mes tests séleniumn s'exécutent sous jenkins slave installé en tant que service Windows, en utilisant le compte "Système local" avec l'option "Autoriser le service à interagir avec le bureau" activé dans Windows 7. Certains cas de test ont toujours échoué en raison d'une résolution d'affichage incorrecte.

Je me suis connecté à la console de Windows VM (EXSI Server + VMware Fusion), j'ai changé la résolution en 1400x900 et j'ai redémarré la machine virtuelle windwos. Tout fonctionne bien maintenant.