J'utilise la bibliothèque WatiN pour faire un test de fumée rapide sur un site Web après le déploiement. Entre autres choses, je veux m'assurer que lorsque je clique sur un lien spécifique sur ma page, un PDF est ouvert dans le navigateur. Cliquer sur le lien est facile, mais comment puis-je savoir si Acrobat Reader a été ouvert avec succès dans la fenêtre du navigateur? Je voudrais saisir des situations telles que 404, les erreurs de serveur, ou temporisations ...Comment vérifier si PDF a été ouvert avec succès dans le navigateur en utilisant WatiN?
Répondre
Rub,
J'ai trouvé un rapport de bogue et une demande de fonctionnalité sur cette question. La demande de bogue et de fonctionnalité est fermée, mais je ne suis toujours pas en mesure de joindre une fenêtre IE hébergeant un document PDF.
En fait, la fenêtre qui héberge le fichier PDF n'est même pas un élément des collections IE.InternetExplorers() ou InternetExplorersNoWait(). J'utilise WatiN 2.0.10.928 et IE7 sur Windows Xp.
Ma solution était d'utiliser ajouter une référence COM à Interop.SHDocVw.dll et vérifier moi-même fenêtre, car les fenêtres IE que les téléspectateurs PDF hôte ne sont pas des éléments dans la collection WatiN.IE.InternetExplorers() pour une raison .
N'ajoutez PAS de référence à Interop.ShDocVw.dll en utilisant Ajouter une référence -> COM -> Microsoft Internet Controls v1.1. Si vous ne Theres une bonne chance que vous recevez cette exception:
System.IO.FileLoadException: Impossible de charger le fichier ou l'assembly « Interop.SHDocVw, Version = 1.1.0.0, Culture = neutral ... ou une de ses dépendances. La définition manifeste de l'assembly situé ne correspond pas à la référence d'assemblage (Exception de HRESULT: 0x80131040)
Au lieu de cela, vous devez référencer le ShDocVw.dll distribué avec des thats Watin. Consultez le 'Erreur Watin Impossible de charger l'Assemblée' question StackOverflow pour plus d'informations: WatiN Error Could not Load Assembly
using System.IO;
using SHDocVw;
namespace PDF_SPIKE
{
class Program
[STAThread]
static void Main(string[] args)
{
SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindowsClass();
string pdfViewerURL = "http://YourURL/document.pdf";
bool pdfOpened = false;
string filename;
foreach (SHDocVw.InternetExplorer ie in shellWindows)
{
filename = Path.GetFileNameWithoutExtension(ie.FullName).ToLower();
if (filename.Equals("iexplore") && ie.LocationURL.Equals(pdfViewerURL))
pdfOpened = true;
}
if (pdfOpened)
Console.WriteLine("Your PDF file is OPENED");
else
Console.WriteLine("Your PDF file was NOT found.");
}
Merci, MoMo, pour cette réponse. C'était très utile pour moi aussi.
Je voudrais juste donner une solution supplémentaire à cette réponse juste au cas où quelqu'un d'autre se heurte au même problème que moi.
J'ai d'abord reçu une erreur mise en œuvre de cette ligne:
SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindowsClass();
"SHDocVw.ShellWindowsClass ne peut pas être intégré, utilisez l'interface applicable au lieu"
La solution peut être trouvée ici: http://www.debugging.com/bug/24258
Vous devez faire un clic droit sur la référence Interop.ShDocVW.dll et définir les types d'interopérabilité à false.
- 1. Vérifier si le contenu a déjà été envoyé en PHP
- 2. Comment vérifier si une méthode privée a été appelée avec l'argument attendu dans le test unitaire?
- 3. fichier batch Windows - vérifier si le fichier a été modifié
- 4. Comment puis-je vérifier si une structure a été initialisée?
- 5. Javascript - vérifier si le prototype de méthode a été changé?
- 6. Comment puis-je tester si un fichier a été ouvert pour l'écriture en Perl?
- 7. Comment vérifier si JavaScript est activé dans le navigateur client en utilisant le code Java
- 8. Comment puis-je savoir quand .Net System.Diagnostics.Process a été exécuté avec succès ou a échoué?
- 9. avec Watin comment empêcher le navigateur de charger des images?
- 10. Watin et PDF
- 11. WatiN effacer le cache du navigateur
- 12. Vérifier si un objet a le focus
- 13. Y a-t-il un moyen de savoir si un email a été ouvert?
- 14. comment vérifier quand le champ enter/return a été activé?
- 15. Vérifier si le fichier a été créé au cours des X dernières heures
- 16. comment vérifier si une valeur particulière a été sélectionnée dans la zone de sélection
- 17. Comment puis-je vérifier si l'application a été démarrée à partir d'un CD/DVD en C#?
- 18. Comment utiliser JQuery.support pour vérifier si le navigateur est Firefox?
- 19. Comment vérifier si l'utilisateur a entré ou non des données dans MySQL en utilisant PHP?
- 20. L'historique du navigateur a été effacé après la navigation vers un fichier pdf via href
- 21. Surlignage PDF externe avec le navigateur Safari ne fonctionne pas!
- 22. Comment vérifier si un assemblage a changé
- 23. Comment puis-je vérifier si un utilisateur a été engagé près d'un CGPath?
- 24. Rhino Mocks: Comment vérifier qu'un constructeur a été appelé
- 25. Vérifiez si l'enregistrement a été détruit juste dans des rails
- 26. Comment vérifier si le contenu du répertoire a changé avec PHP?
- 27. Déterminez si une connexion a été rompue
- 28. vérifier si une souris a été cliqué dans une zone spécifique
- 29. Comment puis-je vérifier si un 'Review' a déjà été écrit par un @current_user donné?
- 30. Comment savoir si un formulaire a été modifié