Je vais mettre sur pied une application pour automatiser un site Web / une application externe. Dans certains cas, je devrai naviguer sur le site comme le ferait un utilisateur (certains liens que je dois suivre ne peuvent pas être prévus et doivent être analysés à partir d'une réponse)
J'utilise déjà Html Agility Pack , et je suis au courant de Tidy si cela est nécessaire.
Y a-t-il d'autres technologies dont je devrais être au courant?
Existe-t-il des modèles recommandés pour pouvoir s'adapter rapidement en cas de changement de l'application Web externe? J'envisage d'encapsuler la validation des réponses comme un certain type de stratégie ou un modèle similaire qui peut être facilement séparé / branché si nécessaire, mais toute suggestion spécifique serait excellente.
la source
Réponses:
Si vous cherchez à automatiser la navigation d'un site Web externe comme le ferait un utilisateur, Watin est parfait pour cela. Il pilotera un navigateur Web via un modèle d'objet et dispose d'un large éventail de capacités d'analyse basées sur le DOM (ainsi que des capacités non DOM que vous trouverez dans un navigateur, y compris des scripts).
Voici un lien:
Watin.org
la source
Si vous recherchez la possibilité d' apporter rapidement des modifications pour suivre celles-ci dans l'application Web externe, je regarderais les scripts. Si C # est votre langue de choix, regardez la compilation de code à la volée. Si vous utilisez une base de données, le code du script peut y être stocké, sinon, les fichiers en texte brut fonctionneraient également.
En ce qui concerne les modèles GoF, la stratégie est le choix des manuels.
L'autre "modèle" à considérer, d'autant plus que vous avez mentionné la validation des réponses en les utilisant pour sélectionner l'action suivante, est une machine à états finis . Par exemple, les états d'un client de messagerie Web peuvent être "non connecté", "dans la boîte de réception", "lecture du message", "modification de la réponse", etc. Vous exécuteriez une action en fonction de l'état, puis en fonction de la réponse, sélectionnez l'état suivant.
la source
Le modèle devrait vraiment provenir du problème, mais voici quelques choix:
Si vous êtes principalement concerné par les coûts / ennuis de développement en cours: modèle de stratégie (déjà mentionné) - utilisez-le pour implémenter les interfaces au niveau des composants et utilisez une méthodologie de liaison dynamique pour résoudre des stratégies spécifiques (implémentations). Un conteneur IOC (j'aime Autofac ces jours-ci) fonctionnerait bien.
Si vous avez besoin de prendre en charge les éléments ci-dessus, vous devez également évoluer: Map Reduce (quelqu'un connaît-il un bon m + r fx pour .net?).
la source
Selon la façon dont la page Web change, cela peut être difficile. Vous pouvez conserver une liste d'expressions régulières standard dans une base de données, puis lorsque l'une ne fonctionne plus, vous pouvez parcourir l'ensemble de base avec d'autres jusqu'à ce que vous en frappiez une. Ensuite, vous souhaitez marquer cela pour une utilisation future.
la source