JQuery скрипт для iframe не работает с Selenium3 - PullRequest
0 голосов
/ 20 ноября 2018

Я создал сценарий JQuery, который работает в консоли браузера, но не работает в автоматизации selenium3.Исключение, которое я получаю, - unknown error: $ is not defined.Я прочитал, что проблема является вторым аргументом в селекторе.Я пытался экранировать символ $, но он не работает.

Это сценарий, который я выполнил в консоли браузера:

$('input[type=file]', $('#fonto').contents()).css('display','block')

Нокогда я выполняю во время моего теста, не работает.Это строка кода:

((JavascriptExecutor) getDriver()).executeScript("$('input[type=file]', 
$('#fonto').contents()).css('display','block')");

Мне нужен второй аргумент, потому что ввод находится внутри iframe.

Эта проблема возникает в браузерах Firefox и Chrome.

Как правильно выполнить этот скрипт?

EDIT JQuery не загружен.Мне нужно знать, как включить JQuery, прежде чем выполнять мой скрипт.

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Наконец-то я решил проблему, но у меня есть два разных подхода:

  1. Следуйте пункту 2 в этой ссылке .Это означает добавление нового файла в ваш проект, и у него есть очень полезный пример того, как проверить, включен он или нет.В этом случае скрипт должен удалить часть iframe, потому что мы уже в iframe.Примерно так $('input[type=file]').css('display','block')
  2. Проблема заключалась в том, что у iframe не активен JQuery, а у основного контента, фрейма по умолчанию, активен JQuery.Затем я могу изменить текущий кадр на кадр по умолчанию, выполнить полный скрипт с помощью селектора iframe ($('input[type=file]', $('#fonto').contents()).css('display','block')).И после этого вернитесь в iframe.

Мой выбор, потому что у меня много проектов, которые исполняют скрипты, я последую за вторым.

0 голосов
/ 21 ноября 2018

Во-первых, вы должны переключиться на iframe.Затем включите jquery следующим образом:

            browser.SwitchTo().Frame("your_iframe");
            var jqueryLoad = "if (typeof(jQuery) == 'undefined')";
            jqueryLoad += "{";
            jqueryLoad += "var iframeBody = document.getElementsByTagName('body')[0];";
            jqueryLoad += "var jQuery = function(selector) { return parent.jQuery(selector, iframeBody); };";
            jqueryLoad += "var $ = jQuery;";
            jqueryLoad += "}";

            IJavaScriptExecutor jsExe = browser as IJavaScriptExecutor;
            jsExe.ExecuteScript(jqueryLoad);

            jsExe.ExecuteScript("Your jquery code here !");

Вы можете выполнить свой код jquery сейчас.Если у вас есть вложенные фреймы, вам следует заново настроить код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...