Невозможно вызвать вставленный фрагмент Javascript - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь вставить фрагмент Javascript в веб-страницу, а затем вызвать его, используя голубую призму.Цель этого - проанализировать, какие элементы возвращаются из поиска, чтобы определить, куда идти дальше в общем потоке процесса.

Я протестировал код Javascript на предполагаемом веб-сайте с помощью консоли разработчика IE 11, и он работает без проблем.Код приведен ниже на случай, если он будет полезен.

function includes(stringToCheck, CharacterToSearchFor)
{
    var found = new Boolean();
    var splitString = stringToCheck.split("");

    for (var index = 0; index < splitString.length; index++) 
    {
        if(splitString[index] == CharacterToSearchFor)
        {
            return true;
        }
    }
    return false;
}

function getPartners() //declare a function which can be called from BP. once called all code within the enclosing {} will be run
{
    var searchResults = document.getElementsByClassName("findASolicitorListItem"); //search the web page for all elements with a specific tag and store them in a variable called searchResults.

    if(searchResults.length == 0) // If the number 
    {
        alert( "No Solicitors were found.");
    }else if(searchResults.length == 1)
    {
        var innerSearchResults = searchResults[0].getElementsByTagName("span");

        for(i = 0; i < innerSearchResults.length; i++)
        {
            var spanText = innerSearchResults[i].innerText.toString();

            if((spanText != ""))
            {
                if(!includes(spanText, "|"))
                {
                    alert("One Solicitor found. " + spanText);
                }
            }
        }

    }else if (searchResults.length > 1)
    {
        alert( "More than one solicitor was found. Manual Checking required.");
    }
}

Он сохраняется в элементе данных и передается в параметр этапа навигации (Вставить фрагмент JavaScript).

PrintScreen этапа вставки фрагмента Javascript

Когда этот этап запущен, он успешно внедряет функции Javascript в веб-страницу.

Затем я пытаюсь вызвать этот вставленный фрагмент javascript

Экран печати Invoke Этап функции Javascript

При выполнении этого этапа появляется следующее сообщение об ошибкеby Blue Prism.

Внутренний: не удалось выполнить шаг 1 на этапе навигации «Анализ результатов» на странице «Анализ результатов поиска» - ошибка при вызове метода javascript: исключение из HRESULT: 0x80020101-> в mshtml.HTMLWindow2Class.и нашел этот ответ, который указывает, что есть проблема с кодом, однако я могу вручную запустить этот код просто отлично.

Кто-нибудь имел опыт использования этих методов в BluePrism или видел это сообщение об ошибке раньше, кто может помочь мне решить?

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Чтобы вызвать функцию с помощью действия «Вызвать функцию Javascript», в поле «Аргументы» необходимо указать аргументы в синтаксисе JSON.Если аргументов нет, вы ставите «[{}]».enter image description here

В приведенном выше примере с Мареком функция должна выглядеть так:

function sayHello(name)
{
    alert("Hello " + name.name + "!");
}

и аргументы: "[{'name': 'world'}]".

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

На самом деле мне никогда не удавалось заставить Invoke Function надежно работать с параметрами, я всегда использую Insert Fragment для всего, включая вызов.

Если вы вставите эту функцию как фрагмент ...

function sayHello(name)
{
    alert("Hello " + name + "!");
}

... чтобы вызвать его, просто вставьте его в другой фрагмент:

sayHello("World");

Тадаа!

enter image description here

В качестве примечания, я не уверен, какой элемент в Application Modeler вы используете для вставки фрагмента, но похоже, что вы используете корневой (прикладной) узел.У меня был лучший опыт вставки фрагмента в отдельный элемент HTML BODY, по некоторым причинам производительность намного выше.

enter image description here

...