2009-12-18 5 views
4

J'ai une application dans laquelle l'utilisateur clique sur un bouton, ce qui déclenche un iFrame à ouvrir. J'ai vraiment du mal à attendre que ce cadre ouvre une charge avant de continuer.Attendre un iframe pour ouvrir et charger avec Selenium

Je ne peux pas utiliser:

wait_for_page_to_load 

parce que ce n'est pas la page qui se charge, il est le iframe.

Je ne peux pas utiliser:

select_frame 

parce que le cadre n'a pas encore chargé

donc je suis parti avec le toujours si laid

sleep(3) 

avant de pouvoir sélectionner le cadre et affirmer quelque chose à ce sujet.

Des suggestions sur la façon de le faire correctement? Je ne veux pas utiliser JS spécifique à la librairie car je suis en train d'extraire un Selenium DSL pour une utilisation sur plusieurs projets. De plus, j'utilise du sélénium-client pour que tout ce qui est ruby ​​soit un plus.

Cheers,

Ad.

modifier: Je ne peux pas sembler utiliser:

wait_for_frame_to_load 

soit, il arrive à expiration.

Répondre

3

Vous ne savez pas si cela fonctionnera car les iFrame s'exécutent dans un sandbox distinct des trames normales car vous pouvez faire des appels inter-sites et ils peuvent avoir leur propre JavaScript avec lequel vous ne pourrez pas interagir.

@selenium.wait_for_frame_to_load "iframe", "30000" 

il peut travail si vous exécutez vos tests en chrome ou * * iehta mais n'ont rien au moment de tester avec

+0

Fella, a oublié que l'on regrette - essayé aussi. Je peux l'utiliser une fois que le cadre est chargé et que je l'ai sélectionné, mais il expire juste si je l'attends après avoir cliqué sur le bouton qui le déclenche. Merci, merci. – Rodreegez

+0

Je pensais que cela pourrait être le cas. IFrames ont tendance à être sandboxed parce qu'ils sont considérés comme des risques de sécurité par les navigateurs – AutomatedTester

+1

arrrgh! J'ai travaillé dessus - j'utilisais l'identifiant de l'image (c'est-à-dire #iframe) plutôt que le nom de l'image (iframe). J'ai maintenant ce travail en * chrome. Je sélectionne le cadre, puis j'attends qu'il charge, puis j'affirme quelque chose à ce propos. Je sélectionne ensuite frame ("parent = parent") pour sortir du cadre. À votre santé! – Rodreegez

Questions connexes