我正在尝试将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中使用这些方法有任何经验,或者在谁可以帮助我解决之前看到了此错误消息?
答案 0 :(得分:1)
实际上,我永远无法使Invoke Function
可靠地使用参数,我总是对所有内容都使用Insert Fragment
,包括调用在内。
如果将此函数作为片段插入...
function sayHello(name)
{
alert("Hello " + name + "!");
}
...要调用它,只需将其作为另一个片段插入
:sayHello("World");
Tadaa!
作为旁注,我不确定要在Application Modeler中使用哪个元素进行片段插入,但似乎您正在使用根(应用程序)节点。我有将片段插入专用HTML BODY元素的更好经验,出于某种原因,性能要好得多。
答案 1 :(得分:0)