2010-05-04 55 views
12

我有一個頁面(index.html的),其中有一個框架:如何使用Selenium在框架內執行JavaScript?

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

而且otherPage.html具有內容:

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

我嘗試使用下面的代碼硒對指數.html:

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

然而,這失敗慘不忍睹。它說jQuery對象不存在。

如果我嘗試在otherPage執行Selenium測試,像這樣:

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

一切都是虎背熊腰,腳蹬dory沒問題。

現在,這是僞代碼,如果人們希望我編譯它,我會做到這一點,並把它放在github上。

回答

12

Selenium將窗口對象存儲在其自己的對象中,以便它可以更好地操縱它。一旦你移動到框架,它應該是這樣的。

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

這應該爲你工作

我有我的網站上的教程對於這種類型的情況here

+0

任何想法,該怎麼辦呢來自硒IDE?窗口返回沒有jQuery的對象XPCNativeWrapper [object Window]](加載頁面後很長時間)。 – IAdapter 2011-09-09 13:49:07

+0

當我想要在IDE中執行此操作時,在google上獲得高分。 Command is assertEval Target是腳本(確保您使用jQuery從窗口引用它,因此它是窗口。$(「...)該值是它返回的值。 – HMR 2013-04-16 09:26:06

11

您可以使用:

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

這是使用Selenium 2 webdriver – Zugwalt 2014-05-28 00:17:12

+1

Selenium類型沒有提到問題。 – Innovation 2015-05-18 10:36:47

相關問題