2015-11-06 1 views
1

Je n'arrive pas à trouver un moyen de cliquer sur le bouton contextuel de confirmation quand il est dans l'iframe. Je pouvais trouver l'iframe et cliquer sur le bouton "Clicked OK", puis confirmer le bouton apparaît, à ce stade, je suis coincé. J'ai posté mon code html et C# ci-dessous.Comment cliquer sur OK dans la fenêtre de confirmation ouverte à partir d'une image (Watin)?

fichier est ici: ///C/Temp/IFrame.html

<html> 
    <body> 
     <iframe id="FrameID" src="file:///C:/Temp/confirm1.html" width="100%" height="100%"> 
      <p>Your browser does not support iframes.</p> 
     </iframe> 
    </body> 
</html> 

est le fichier ici: /// C: /Temp/confirm1.html

<html> 
    <body> 
    <input id="myButton1" type="button" value="this is a button" 
     onclick="confirmMe(); return false;"><br> 
    <script> 
     function confirmMe() { 
     var answer = confirm ("Are you having fun?") 
     if (answer) 
      document.getElementById("myButton1").value="Clicked OK"; 
     else 
      document.getElementById("myButton1").value="Clicked Cancel"; 
     } 
    </script> 
    </body> 
</html> 

Voici ce qu'il semble:

enter image description here

J'ai ce code qui fonctionne sans cadre, mais lorsque l'image est utilisée, je ne trouve pas un moyen de cliquer sur la boîte de dialogue de confirmation surgie de l'iframe.

public static void ConfirmPopupFromFrame() 
{ 
    IE ie = new IE(); 
    ie.GoTo("file:///C:/Temp/IFrame.html"); 
    ie.WaitForComplete(); 

    Frame iframe; 
    try{ 
     iframe = ie.Frame("FrameID"); 
    } 
    catch (FrameNotFoundException ex){ 
     throw ex; 
    } 

    ConfirmDialogHandler confirm = new ConfirmDialogHandler(); 
    using (new UseDialogOnce(ie.DialogWatcher, confirm)) 
    {  
     iframe.Button("myButton1").Click(); // At this point confirm dialog pops up but below lines doesn't work since this is frame instance not ie. is there a way to make it work? 
     confirm.WaitUntilExists(); 
     confirm.OKButton.Click(); 
    }  
} 

Répondre

2

changement

iframe.Button("btnId").Click(); 

à

iframe.Button("myButton1").ClickNoWait(); 

L'id bouton est probablement juste une faute de frappe dans votre code de test, ce qui est important est de changer Clinck à ClickNoWait. Je viens de tester - ça marche pour moi

+0

yes ID était la faute de frappe. mais votre réponse l'a cloué merci :) – yantaq