无法调用插入的Javascript片段

时间:2018-11-29 10:45:19

标签: blueprism rpa

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

我已经使用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

在此阶段运行时,我收到Blue Prism提出的以下错误消息。

  

内部:在“分析搜索结果”页面上的导航阶段“分析结果”中无法执行步骤1-调用javascript方法时失败:HRESULT异常:0x80020101->在mshtml.HTMLWindow2Class.IHTMLWindow2_execScript(字符串代码,字符串语言) )      在BluePrism.ApplicationManager.HTML.clsHTMLDocument.InvokeJavascriptMethod(字符串方法名,字符串jsonargs,对象和检索,字符串和sErr)

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

是否有人在BluePrism中使用这些方法有任何经验,或者在谁可以帮助我解决之前看到了此错误消息?

2 个答案:

答案 0 :(得分:1)

实际上,我永远无法使Invoke Function可靠地使用参数,我总是对所有内容都使用Insert Fragment,包括调用在内。

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

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

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

sayHello("World");

Tadaa!

enter image description here

作为旁注,我不确定要在Application Modeler中使用哪个元素进行片段插入,但似乎您正在使用根(应用程序)节点。我有将片段插入专用HTML BODY元素的更好经验,出于某种原因,性能要好得多。

enter image description here

答案 1 :(得分:0)

要通过操作“调用Javascript函数”来调用函数,请在“参数”字段中将参数放入JSON语法中。如果没有参数,则输入“ [{}]”。 enter image description here

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

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

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