Подтвердить что ты не робот

Как вы используете Selenium для выполнения javascript внутри фрейма?

У меня есть страница (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.

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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