2013-07-05 8 views
12

Scenario: - Ho anche una pagina con un editor di testo iFrame e un pulsante nella pagina. - Sono passato dal frame principale all'iFrame per leggere dal corpo dell'Editor di testo - Dopo aver letto dal corpo dell'Editor di testo, voglio fare clic sul pulsante nel frame principale della pagina. - Per questo ho provato a tornare al frame principale dall'iFrame usando la seguente istruzione: webDriver.SwitchTo(). DefaultContent(); - Ma ancora non riesco a trovare l'elemento pulsante che risiede nel frame principale.Passa al frame principale da iFrame e trova un elemento nel frame principale utilizzando Selenium Webdriver. C#

Apprezzo il vostro aiuto! Grazie

+0

Possiamo vedere il codice HTML della IFrame – Arran

risposta

13

Questo è per le vostre risposte ragazzi. È risolto!

La soluzione:

  • Mentre io uso il webDriver.SwitchTo().DefaultContent(); passa il webDriver alla cima più finestra della pagina. [In precedenza stavo cercando l'elemento button in questa finestra e quindi non ero in grado di trovarlo mentre il pulsante era seduto nel frame principale della pagina]

  • Dopo aver attivato la finestra principale, ho cambiato di nuovo il webDriver al frame principale della pagina. Questo frame principale aveva l'elemento button. Così sono stato in grado di trovare l'elemento del pulsante. E questo ha risolto il problema!

Quindi il codice finale non avere webDriver.SwitchTo().DefaultContent(); ma ha la seguente al suo posto:

_webDriver.SwitchTo().Window(windowHandle); 
    _webDriver.SwitchTo().Frame("mainFrame"); 

Nota: WindowHandle nel codice di cui sopra è la maniglia della parte superiore più finestra della pagina. Immagino che il suo valore possa cambiare in base al browser, non è sicuro.

6

ero alle prese con un problema simile e ha scoperto che potevo tornare da Window Handle:

string currentWindow = Driver.CurrentWindowHandle; 
// switch to frame and do stuff.. 
Driver.SwitchTo().Window(currentWindow); // switch back 
2

Nel mio caso il seguente codice funzionato benissimo:

driver.switchTo().parentFrame(); 
Problemi correlati