无法调用插入的 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'}]”。
我正在尝试将 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'}]”。