无法调用插入的 Javascript 片段

Unable to Invoke Inserted Javascript Fragment

我正在尝试将 Javascript 片段插入网页,然后使用 blue prism 调用它。这样做的目的是分析从搜索中返回哪些元素,以确定整个流程中的下一步。

我已经使用 IE 11 开发人员控制台在目标网站上测试了 Javascript 代码,它可以正常运行。代码如下,以防有用。

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 of Insert Javascript Fragment stage

当此阶段为 运行 时,它成功地将 Javascript 函数注入网页。

然后我尝试调用这个插入的 javascript 片段

Printscreen of Invoke Javascript Function stage

当这个阶段 运行s 我收到 Blue Prism 引发的以下错误消息。

Internal : Failed to perform step 1 in Navigate Stage 'Analyse Result' on page 'Analyse Search Results' - Failed while invoking javascript method:Exception from HRESULT: 0x80020101-> at mshtml.HTMLWindow2Class.IHTMLWindow2_execScript(String code, String language) at BluePrism.ApplicationManager.HTML.clsHTMLDocument.InvokeJavascriptMethod(String methodname, String jsonargs, Object& retval, String& sErr)

我搜索了这个错误代码并找到了 this 答案,这表明代码有问题但是我可以手动 运行 这个代码就好了。

有没有人有在 BluePrism 中使用这些方法的经验,或者之前看到过这个错误信息谁能帮我解决?

我实际上从来没有能够 Invoke Function 可靠地使用参数,我总是对所有内容使用 Insert Fragment,调用 included。

如果将此函数作为片段插入...

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

...要调用它,您只需将其作为另一个片段插入:

sayHello("World");

太棒了!

附带说明一下,我不确定您使用 Application Modeler 中的哪个元素插入片段,但看起来您使用的是根(应用程序)节点。我对将片段插入专用 HTML BODY 元素有更好的经验,出于某种原因,性能要好得多。

要通过操作 "Invoke Javascript function" 调用函数,您应该在 Arguments 字段中将参数置于 JSON 语法中。如果没有参数,则输入“[{}]”。

在上述 Marek 的示例中,函数应如下所示:

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

和参数:“[{'name':'world'}]”。