一尘不染

您如何使用Selenium在框架内执行javascript?

selenium

我有一个带有框架的页面(index.html):

<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>

我正在尝试在index.html上使用以下selenium代码:

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]')");

一切都是笨拙的海ry。

现在,这是伪代码,如果人们希望我对其进行编译,我会这样做并将其放在github上。


阅读 281

收藏
2020-06-26

共1个答案

一尘不染

Selenium将Window对象存储在其自己的对象中,以便可以更好地对其进行操作。一旦移动到框架,它应该是这样的。

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

那应该为你工作

我有我的网站教程这种类型的情况在这里

2020-06-26