Как вы используете 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.
Ответы
Ответ 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');");