2010-05-04 56 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

相关问题