2010-05-04 19 views
12

Ho una pagina (index.html), che ha una struttura:Come usi Selenium per eseguire javascript all'interno di un frame?

<html> 
<body> 
<iframe src="otherPage.html" /> 
</body> 
</html> 

E l'otherPage.html abbia i contenuti:

<html> 
<head><link src="jquery-min.js" type="text/javascript" /></head> 
<body><div id="main">Contents</div></body> 
</html> 

Sto tentando di utilizzare il seguente codice di selenio sull'indice .html:

selenium.open("index.html"); 
selenium.selectFrame("//iframe"); 
selenium.getEval("window.jQuery('div[id=main]')"); 

Tuttavia questo fallisce miseramente. Dice che l'oggetto jQuery non esiste.

Se tento di eseguire il test del selenio sulla otherPage in questo modo:

selenium.open("otherPage.html"); 
selenium.getEval("window.jQuery('div[id=main]')"); 

tutto è rose e fiori.

In questo momento questo è uno pseudo codice, se la gente vuole che lo faccia compilare lo farò e lo metto su github.

risposta

12

Il selenio memorizza l'oggetto finestra all'interno del proprio oggetto in modo da poterlo manipolare meglio. Una volta che ti sposti al telaio, dovrebbe essere così.

selenium.getEval("var window = this.browserbot.getUserWindow();window.jQuery('div[id=main]')"); 

E che dovrebbe funzionare per voi

io abbiamo un tutorial sul mio sito per questo tipo di situazione here

+0

alcuna idea di come farlo da selenio IDE? finestra restituisce [oggetto XPCNativeWrapper [oggetto Window]] che non ha jQuery (molto tempo dopo il caricamento della pagina). – IAdapter

+0

I punteggi sono alti su google quando stavo cercando di farlo nell'IDE. Il comando è assertEval il Target è lo script (assicurati di utilizzare jQuery per fare riferimento alla finestra in modo che sia window. $ ("...) Il valore è il valore restituito. – HMR

11

È possibile utilizzare:

JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("javascript:sendEvent('play');"); 
+1

Questo è il modo di farlo con Selenium 2 webdriver – Zugwalt

+1

Il tipo di selenio non è menzionato in questione. – Innovation

Problemi correlati