Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you use Selenium to execute javascript within a frame?

I have a page (index.html) which has a frame:

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

And the otherPage.html has the contents:

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

I am attempting to use the following selenium code on index.html:

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

However this fails miserably. It says that the jQuery object doesn't exist.

If I attempt to execute the selenium test on the otherPage like so:

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

everything is hunky dory.

Right now this is pseudo code, if people want me to make it compile I'll do that and put it on github.

like image 763
Zee Spencer Avatar asked May 04 '10 17:05

Zee Spencer


1 Answers

Selenium stores the Window Object within its own object so it can manipulate it better. Once you move to the frame it should be like this.

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

And that should work for you

I have a tutorial on my site for this type of situation here

like image 193
AutomatedTester Avatar answered Sep 28 '22 03:09

AutomatedTester