Peut powershell attendre jusqu'à ce que IE est DOM prêt?

Je suis en train d'écrire un script et je suis en utilisant

while($IE.busy) {Start-Sleep 1}

à attendre que la page soit prêt.

Une fois que la page est prête mon script remplit et soumet un formulaire. J'ai eu des problèmes à cause (je pense) c'est à dire les rapports qu'il est fait lorsque la page est chargée, mais avant que le document a été rendu (ce qui provoque le script à l'erreur). Ma solution actuelle est d'ajouter 4 secondes de temps d'attente après le chargement de la page, mais je me sentirais plus à l'aise avec une méthode qui n'est pas de base de temps si possible.

Je vais supposer que vous êtes à l'aide de la InternetExlporer.Application objet COM? Si oui, vous ne serez probablement pas en mesure de souscrire à des événements, parce que ce n'est pas un .NETTE de l'objet. Si c'était un .NET de l'objet, vous pouvez utiliser Register-ObjectEvent raccorder un gestionnaire d'événement.
Correct, je suis à l'aide de l'IE de l'objet COM. Donc je suppose que l'augmentation de l'attente pour une fois que je pense est fort c'est la seule option?
Pour autant que je sais, ouais basé sur le temps de vérification est votre meilleur pari. Si, après une certaine période de temps (par exemple. 5 minutes), vous souhaitez arrêter la recherche, vous pouvez utiliser un break déclaration à l'intérieur de la while boucle.
Attendez, vous dites que je suis en mesure de vérifier si le DOM est prêt? Droit maintenant, je ne suis pas du tout de vérification. Je suis en attente jusqu'à ce que IE n'est pas occupé (ce qui, je pense seulement capte l'activité du réseau), puis essayer d'attendre une quantité sûre de temps avant que je commence l'interaction avec le DOM. Suis-je en mesure de vérifier si le DOM est prêt avant d'avoir des relations avec elle? Je suis très bien avec cette mise sur une minuterie. Mon problème était que je ne savais pas que je pouvais encore le vérifier, le code que j'ai eu sur un timer, c'est le code qui interagit avec la page (remplit un formulaire) et, évidemment, échoue si le DOM n'est pas encore prête.
Excuses - le précédent commentaire a été posté à la hâte, et est incomplète. Une fois que j'ai le innerHtml, je puis l'analyser à la recherche d'un élément particulier qui n'est présent que lorsque la page est affichée. Une fois trouvé, je sais que la page est entièrement chargée. Salissant, mais il a été fiable jusqu'à présent. Je ne vois pas d'autre moyen que IE "savent" quand la page a été complètement rendu.

OriginalL'auteur George Kendros | 2014-03-19