Как вы используете Selenium для выполнения JavaScript в кадре? - PullRequest
12 голосов
/ 04 мая 2010

У меня есть страница (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.open("index.html");
selenium.selectFrame("//iframe");
selenium.getEval("window.jQuery('div[id=main]')");

Однако это с треском проваливается. Это говорит о том, что объект jQuery не существует.

Если я попытаюсь выполнить тест на селен на другой странице, примерно так:

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

все в порядке,

Прямо сейчас это псевдокод, если люди хотят, чтобы я его компилировал, я сделаю это и выложу на github.

Ответы [ 2 ]

12 голосов
/ 05 мая 2010

Selenium хранит объект Window в своем собственном объекте, чтобы лучше управлять им. Как только вы переместитесь в кадр, это должно быть так.

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

И это должно сработать для вас

У меня на сайте есть учебник для ситуаций такого типа здесь

11 голосов
/ 11 октября 2012

Вы можете использовать:

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("javascript:sendEvent('play');");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...