2010-03-18 10 views
5

Utilisation du contrôle webBrowser dans un formulaire winForm. mais quand la page Web est mise à jour par Ajax ou dans une armature, je ne peux pas employer webBrowser1.document.getElementById, etc. pour trouver que htmlElement. L'élément n'apparaîtra pas non plus dans le View->Source code dans IE.Le contrôle webBrowser ne trouve pas htmlElement après la mise à jour de la page Web Ajax ou dans l'image

Le but unique est de trouver que htmlElement et de simuler un clic ou une autre fonction comme invokeMember("staff").

Répondre

1

L'objet Document de WebBrowser représente en effet une vue en direct du DOM, il peut donc y avoir une autre raison pour laquelle vous ne pouvez pas le trouver. Les mises à jour DOM ne seront cependant pas représentées dans View -> Source. Vous devriez utiliser les outils de développement IE8 qui vous montrera une vue en direct du DOM et peut-être vous verrez quelque chose comme un ID incorrect/en double ou quelque chose.

0

Je devine que vous avez déjà résolu ce problème vous-même, mais si vous n'avez pas, reportez-vous à ma question: WebBrowser Control and GetElement by ID

Essentiellement, si vous faites quelque chose au contrôle WebBrowser (c.-à- , ajoutez un membre au DOM) il le fera de manière asynchrone. C'est-à-dire, il le fait sur un autre thread, de cette façon il évite de verrouiller votre thread appelant lorsque le WebBrowser fonctionne. Le problème est que si vous modifiez quelque chose par programmation avec une commande, vous devrez attendre que cette commande ait fini de charger ses changements jusqu'à ce que vous puissiez travailler avec le résultat.

Vérifiez ma question là pour un exemple de code de ce que je faisais. J'espère que quelqu'un trouvera mes essais précédents utiles.

Questions connexes